diff options
Diffstat (limited to 'gcc-4.8.3/contrib')
114 files changed, 20673 insertions, 0 deletions
diff --git a/gcc-4.8.3/contrib/ChangeLog b/gcc-4.8.3/contrib/ChangeLog new file mode 100644 index 000000000..45259f278 --- /dev/null +++ b/gcc-4.8.3/contrib/ChangeLog @@ -0,0 +1,1952 @@ +2014-05-22 Release Manager + + * GCC 4.8.3 released. + +2013-10-21 Mike Stump <mikestump@comcast.net> + + * gcc_update (configure): Update to handle svn 1.8.1. + +2013-10-16 Release Manager + + * GCC 4.8.2 released. + +2013-05-31 Release Manager + + * GCC 4.8.1 released. + +2013-03-22 Release Manager + + * GCC 4.8.0 released. + +2013-03-22 Jakub Jelinek <jakub@redhat.com> + + * gennews (files): Add files for GCC 4.8. + +2013-03-06 Tobias Burnus <burnus@net-b.de> + + * make-obstacks-texi.pl: New. + +2013-02-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * make_sunver.pl: Enforce C locale. + +2013-02-06 Richard Sandiford <rdsandiford@googlemail.com> + + * update-copyright.py: Add libdecnumber to the default list. + Remove libquadmath and libssp. + +2013-02-06 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Fix typo. + +2013-02-06 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Update + Copyright years. + Request contributions not to use Python features newer + than 2.4. + (GetBuildData): If this is not a build directory, + emit an error only if --results or --manifest are missing. + +2013-02-06 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> + + * testsuite-management/validate_failures.py + (IsInterestingResult): Fix performance regression + +2013-02-04 Richard Sandiford <rdsandiford@googlemail.com> + + * update-copyright.py: New file. + +2013-01-15 David Blaikie <dblaikie@gmail.com> + + * dg-extract-results.sh: Handle KPASSes. + + * dg-extract-results.sh: Constrain the start-of-log pattern. + + * dg-extract-results.sh: Fix order of summary counts. + +2012-12-01 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> + + * testsuite-management/validate_failures.py + (IsInterestingResult): Only strip line a second time if we did split. + Rephrase return statement while at it. + (CollectSumFiles): Also ignore .git directory. + +2012-12-03 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Fix stale + use of 'options'. + +2012-11-30 Doug Evans <dje@google.com> + + * testsuite-management/validate_failures.py: Add support for @include, + @remove directives in manifest files. + + * testsuite-management/validate_failures.py: Add function + GetManifestPath. New global _MANIFEST_SUBDIR. + +2012-11-29 Doug Evans <dje@google.com> + + * testsuite-management/validate_failures.py: Remove pass/fail + indicator from result of GetBuildData. + + * testsuite-management/validate_failures.py: Store options in global + variable _OPTIONS. + + * testsuite-management/validate_failures.py: Rename variable + manifest_name to manifest_path everywhere. + + * testsuite-management/validate_failures.py (CompareBuilds): Pass + options.results to GetSumFiles for clean build. + +2012-11-28 Doug Evans <dje@google.com> + + * testsuite-management/validate_failures.py: Use <target_alias> instead + of <target>. Minor whitespace changes. + + * testsuite-management/validate_failures.py: Record ordinal with + TestResult. + +2012-11-19 Mike Stump <mikestump@comcast.net> + + * compare_tests: Add export LC_ALL=C to make sort happier. + +2012-11-14 H.J. Lu <hongjiu.lu@intel.com> + + * gcc_update: Update libsanitizer generated files. + +2012-11-12 Tobias Burnus <burnus@net-b.de> + + * gcc_update: Add libquadmath generated files. + +2012-11-12 H.J. Lu <hongjiu.lu@intel.com> + + * gcc_update: Add libsanitizer generated files. + +2012-11-05 Lawrence Crowl <crowl@google.com> + + * compare_two_ftime_report_sets: New. + +2012-11-02 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Add option + --clean_build to compare test results against another + build. + +2012-10-31 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Fix parsing + of summary lines. + +2012-10-29 Diego Novillo <dnovillo@google.com> + + * testsuite-management/x86_64-unknown-linux-gnu.xfail: Update. + +2012-10-06 Diego Novillo <dnovillo@google.com> + + * testsuite-management/x86_64-unknown-linux-gnu.xfail: Update. + +2012-10-02 Christophe Lyon <christophe.lyon@linaro.org> + + * check_GNU_style.sh: Remove temporay file upon exit. + +2012-09-26 Joern Rennecke <joern.rennecke@embecosm.com> + + * contrib-list.mk (LIST): Remove arm-freebsd6, arm-linux, + arm-ecos-elf, arm-rtems, arm-elf and arm-wince-pe. + Use --enable-obsolete for picochip-elf. + +2012-09-10 Diego Novillo <dnovillo@google.com> + + * testsuite-management/x86_64-unknown-linux-gnu.xfail: Update. + +2012-09-04 Eric Botcazou <ebotcazou@adacore.com> + + * make_sunver.pl: Add missing newline at the end of extern "C++" block. + +2012-08-24 Diego Novillo <dnovillo@google.com> + + * testsuite-management/x86_64-unknown-linux-gnu.xfail: Update. + +2012-08-14 Diego Novillo <dnovillo@google.com> + + * testsuite-management/x86_64-unknown-linux-gnu.xfail: New. + +2012-08-13 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py (ExpirationDate): Tidy + comment. + +2012-08-13 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py (ParseSummary): Fix + comment. + +2012-08-13 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Import datetime. + (TestResult.ExpirationDate): New. + (TestResult.HasExpired): New. + (ParseSummary): Call it. If it returns True, warn that the + expected failure has expired and do not add it to the set of + expected results. + (GetResults): Clarify documentation. + +2012-07-26 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Do not use + 'with ... as ...' constructs. + +2012-07-19 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py (CollectSumFiles): + Rename from GetSumFiles. + (GetSumFiles): Factor out of CheckExpectedResults. + (CheckExpectedResults): Call it. + (ProduceManifest): Call it. + +2012-07-18 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py: Fix + /usr/bin/python invocation. + +2012-06-19 Steven Bosscher <steven@gcc.gnu.org> + + * check_makefile_deps.sh: Look for c-common.o in c-family/. + Add a few more crt* files to the list of files to skip. + +2012-05-31 Marek Polacek <polacek@redhat.com> + + * mklog: Prevent printing three spaces after the date. + +2012-06-04 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py (GetResults): + Change argument to accept list of summary files to analyze. + Update callers. + (CheckExpectedResults): Handle options.manifest, options.results + and options.ignore_missing_failures. + (Main): Add options --manifest, --results and --ignore_missing_failures. + +2012-05-31 Diego Novillo <dnovillo@google.com> + Cary Coutant <ccoutant@google.com> + + * mklog: New. + +2012-05-25 H.J. Lu <hongjiu.lu@intel.com> + + PR bootstrap/53472 + * contrib/compare-debug (remove_comment): New function. + Remove any .comment sections if the first cmp failed. + +2012-05-09 David Edelsohn <dje.gcc@gmail.com> + + * gcc_update: Use $GCC_SVN to retrieve branch and revision. + +2012-05-01 Richard Henderson <rth@redhat.com> + + * gcc_update: Add libatomic generated files. + +2012-04-23 Manuel López-Ibáñez <manu@gcc.gnu.org> + + * compare_tests: Append '/' to make 'find' traverse + symlinked directories. + +2012-04-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * testsuite-management/validate_failures.py (GetBuildData): Use + target_alias. + +2012-04-06 Doug Evans <dje@google.com> + + * dg-extract-results.sh: Handle KFAILs. + +2012-03-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config-list.mk (LIST): Remove mips-sgi-irix6.5. + +2012-03-13 Joseph Myers <joseph@codesourcery.com> + + * gennews (files): Add files for GCC 4.7. + +2012-03-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config-list.mk (LIST): Remove mips-openbsd. + +2012-03-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config-list.mk (LIST): Remove alpha-dec-osf5.1. + +2012-03-02 Diego Novillo <dnovillo@google.com> + + * testsuite-management/validate_failures.py (class TestResult): Fix + match pattern for the summary line. If there is a parsing failure, + show the line we failed to parse. + +2012-02-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR libstdc++/52188 + * make_sunver.pl: Remove #ifdef handling. + +2012-02-17 Doug Kwan <dougkwan@google.com> + + * contrib/testsuite-management/validate_failures.py + (GetMakefileValue): Check for cross compilers. + +2012-02-15 Quentin Neill <quentin.neill@amd.com> + + * compare_tests: Fix trailing paths in dir arguments. + Handle sum1/sum2 temp files with others. + +2012-02-14 Walter Lee <walt@tilera.com> + + * config-list.mk (LIST): Add tilegx-linux-gnu and + tilepro-linux-gnu. + * gcc_update (gcc/config/tilegx/mul-tables.c): New dependencies. + (gcc/config/tilepro/mul-tables.c): New dependencies. + +2012-02-11 Mike Stump <mikestump@comcast.net> + + * compare_tests (exit_status): Fix. + +2012-02-10 Diego Novillo <dnovillo@google.com> + + * repro_fail: Add --debug and --debug-tui flags. + +2012-02-02 Sumanth G <sumanth.gundapaneni@kpitcummins.com> + Jayant R Sonar <jayant.sonar@kpitcummins.com> + + * config-list.mk (LIST): Add cr16-elf. + +2012-01-02 Georg-Johann Lay <avr@gjlay.de> + + PR target/51345 + * gcc_update (files_and_dependencies): Add + gcc/config/avr/t-multilib, gcc/config/avr/multilib.h. + +2011-11-29 DJ Delorie <dj@redhat.com> + + * config-list.mk (LIST): Add rl78-elf. + +2011-11-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * make_sunver.pl: Convert '?' in glob patterns to '.'. + +2011-11-07 Richard Henderson <rth@redhat.com> + + Merged from transactional-memory. + + * gcc_update: Add libitm to touch data. + +2011-11-07 Quentin Neill <quentin.neill@amd.com> + + * compare_tests: Add ability to compare all .sum + files from two build directories. + +2011-11-05 Joern Rennecke <joern.rennecke@embecosm.com> + + * contrib-list.mk: Add Epiphany configurations. + +2011-09-13 Diego Novillo <dnovillo@google.com> + + * testsuite-management: New. + * testsuite-management/validate_failures.py: New. + +2011-08-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * gcc_update: Determine svn branch from hg convert_revision. + +2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config-list.mk (i586-netware): Remove. + (.PHONY): Remove make-script-dir dependency. + (make-script-dir): Remove. + ($(LIST)): Remove make-script-dir dependency. + +2011-07-15 Bernd Schmidt <bernds@codesourcery.com> + + * gcc_update: Add C6X generated files. + * contrib/config-list.mk: Add c6x-elf and c6x-uclinux. + +2011-07-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config-list.mk (LIST): Append OPT-enable-obsolete to + alpha-dec-osf5.1, mips-sgi-irix6.5. + +2011-06-24 Diego Novillo <dnovillo@google.com> + + * repro_fail: New. + +2011-06-21 Joseph Myers <joseph@codesourcery.com> + + * gcc_update (gcc/config/avr/avr-tables.opt): New dependencies. + +2011-05-19 Joseph Myers <joseph@codesourcery.com> + + * gcc_update (gcc/config/arm/arm-tables.opt): Also depend on + gcc/config/arm/arm-fpus.def. + +2011-05-10 Joseph Myers <joseph@codesourcery.com> + + * gcc_update (gcc/config/rs6000/rs6000-tables.opt): New + dependencies. + +2011-05-09 Joseph Myers <joseph@codesourcery.com> + + * gcc_update (gcc/config/mips/mips-tables.opt): New dependencies. + +2010-05-05 Joern Rennecke <joern.rennecke@embecosm.com> + + * config-list.mk: New file. + +2011-05-02 Joseph Myers <joseph@codesourcery.com> + + * gcc_update (gcc/config/m68k/m68k-tables.opt): New dependencies. + +2011-04-25 Jan Kratochvil <jan.kratochvil@redhat.com> + + * paranoia.cc (ENUM_BITFIELD): Remove. + +2011-04-08 Joseph Myers <joseph@codesourcery.com> + + * gcc_update (gcc/config/arm/arm-tables.opt): New dependencies. + +2011-03-22 Joseph Myers <joseph@codesourcery.com> + + * compare-all-tests (all_targets): Remove crx and m68hc11. + +2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR bootstrap/48135 + * make_sunver.pl: Don't use File::Glob. + +2011-03-05 Joseph Myers <joseph@codesourcery.com> + + * gennews (files): Add files for GCC 4.6. + +2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com> + + * patch_tester.sh (nopristinecache): New shell var, set according + to presence or absence of new -nopristinecache option. + (usage): Document new option. + (bootntest_pristine): Implement it. + +2010-11-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * make_sunver.pl: Use elfdump -s to extract symbols if possible, + readelf -s otherwise. + +2010-11-08 Eric Botcazou <ebotcazou@adacore.com> + + * make_sunver.pl: Ignore entries without symbol name first. Then do + not ignore symbols marked as 'R'. + +2010-10-18 Andi Kleen <ak@linux.intel.com> + + * gccbug.el: Remove. + +2010-10-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * gcc_update: Run $GCC_HG pull and update separately. + Check parents for SVN revision. + +2010-10-11 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * test_recheck: New script. + +2010-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * texi2pod.pl: Replace @@ before @{ and @}, for @samp{@@}. + Also escape characters with grave accents, to be fixed ... + (unmunge): ... here. + (postprocess): Also handle @/ and @acronym{...}. + +2010-07-02 Sebastian Pop <sebastian.pop@amd.com> + + * check_GNU_style.sh: Do not print warning messages when there are + no occurences. + +2010-09-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * gcc_update: Handle hg, too. + +2010-07-08 Eric Botcazou <ebotcazou@adacore.com> + + * make_sunver.pl: Remove extra whitespace in regexp. + +2010-07-02 Sebastian Pop <sebastian.pop@amd.com> + + * check_GNU_style.sh: New. + +2010-07-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * make_sunver.pl: New file. + +2010-07-02 Iain Sandoe <iains@gcc.gnu.org> + + * compare-debug (Darwin): Remove '-x' flag from ld-based object + stripping. Add a comment as to why we do it this way. + +2010-06-20 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: Drop LTO sections. + +2010-06-15 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> + + * gcc_update: Support updating a git clone. + +2010-06-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * test_summary: Don't use diff -u. + Adapt egrep regex. + +2010-06-02 Andrew Haley <aph@redhat.com> + + * download_prerequisites: New script. + +2010-05-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * dg-extract-results.sh: Redirect grep output to /dev/null instead + of grep -q. + +2010-04-22 Basile Starynkevitch <basile@starynkevitch.net> + + * gcc_update: Sets the locale to C. + +2010-04-06 Joseph Myers <joseph@codesourcery.com> + + * gennews (files): Add files for GCC 4.5. + +2010-03-22 Jan Kratochvil <jan.kratochvil@redhat.com> + + Fix *.log tests output containing "===". + * dg-extract-results.sh (/\===/): Rename to ... + (/^\t\t=== .* ===$/): ... this pattern. + +2010-03-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * dg-extract-results.sh: Fix result order to match sequential case. + +2010-01-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * check_warning_flags.sh: Use \012 instead of \n with tr. + +2010-01-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * dg-extract-results.sh: Don't use tail -n. + +2009-10-03 H.J. Lu <hongjiu.lu@intel.com> + Richard Guenther <rguenther@suse.de> + + PR lto/39216 + * gcc_update: Adjust file timestamps for lto-plugin. + +2009-09-10 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk> + + PR bootstrap/41245 + * compare-debug: Handle stripping of dwarf debug sections from darwin + mach-o objects. + +2009-09-04 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: Grep for blank before dash to avoid grep -e. + +2009-09-01 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: Look for .gkd files and compare them. + +2009-08-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + PR testsuite/41166 + * test_summary: Invoke config.status, rather than trying to + parse it. Adjust awk script. + +2009-08-18 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: Drop .eh_frame relocations too. + +2009-08-18 H.J. Lu <hongjiu.lu@intel.com> + + PR testsuite/40704 + * test_summary: Filter out "\r". + +2009-06-02 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: Don't fail just because of .eh_frame differences. + +2009-04-27 Jakub Jelinek <jakub@redhat.com> + + PR testsuite/39807 + * dg-extract-results.sh: Close open files and use >> instead of > + to decrease number of concurrently open files from awk. Avoid + = at the beginning of a regexp and redirect to a file determined + by curfile variable rather than concatenated strings to workaround + Solaris nawk bug. + +2009-04-25 Gerald Pfeifer <gerald@pfeifer.com> + + * test_summary: Only include LAST_UPDATED if it exists. + Complete copyright years. + +2009-04-16 Paolo Bonzini <bonzini@gnu.org> + + * compare-all-tests: New. + +2009-04-14 Jakub Jelinek <jakub@redhat.com> + + * gennews (files): Reference GCC 4.4 web pages. + +2009-04-09 Jakub Jelinek <jakub@redhat.com> + + * reghunt/date_based/reg_periodic: Change copyright header to refer + to version 3 of the GNU General Public License and to point readers + at the COPYING3 file and the FSF's license web page. + * reghunt/date_based/reg_search: Likewise. + * regression/GCC_Regression_Tester.wdgt/widget.html: Likewise. + * regression/btest-gcc.sh: Likewise. + * regression/objs-gcc.sh: Likewise. + +2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * check_warning_flags.sh: Update flag exceptions. + +2008-11-18 Ben Elliston <bje@au.ibm.com> + + * dg-cmp-results.sh: Do not print usage if either .sum file cannot + be opened; print a more meaningful error instead. + +2008-10-24 Janis Johnson <janis187@us.ibm.com> + Jakub Jelinek <jakub@redhat.com> + + * dg-extract-results.sh: New file. + +2008-07-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * check_makefile_deps.sh: New file. + +2008-05-08 Sebastian Pop <sebastian.pop@amd.com> + + * patch_tester.sh (report): Do not print "Checker: ". + +2008-04-23 Sebastian Pop <sebastian.pop@amd.com> + + * patch_tester.sh (report): Do not print the time. + +2008-04-01 Joseph Myers <joseph@codesourcery.com> + + * texi2pod.pl: Handle @samp and @url inside verbatim blocks. + Handle @heading. Handle enumerated lists with starting numbers + and extra headings. + +2008-03-10 Janis Johnson <janis187@us.ibm.com> + + * patch_tester.sh (initialization): Initialize svnpatch and stop. + (usage): Add -svnpath and -stop. + (makedir): New. + (argument handling): Process -stop and -svnpath. + (setup code): Use makedir, error out if initial svn checkout fails. + (update): Use svnpath. Invoke contrib/gcc_update. + (apply_patch): Require that patch was created at top level. Use eval + with option variables. Don't use bootstrap target for make. Verify + that some tests were run. + (bootntest_patched): Use snvpath. + (main loop): For -stop, exit when there are no more patches to test. + +2008-03-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * 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. + +2008-03-06 Tom Tromey <tromey@redhat.com> + + * patch_tester.sh (usage): Watermark is not lexicographic. + Load $STATE/defaults if it exists. + (selfexec): Use $0. + (apply_patch): Handle deletions. + (bootntest): Handle default settings. + +2008-03-05 Jakub Jelinek <jakub@redhat.com> + + * gennews (files): Reference GCC 4.3 web pages. + +2008-02-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * check_warning_flags.sh: New file. + +2008-01-25 Joseph Myers <joseph@codesourcery.com> + + * paranoia.cc (main): Remove handling of c4x_single and + c4x_extended formats. + +2007-12-26 Sebastian Pop <sebastian.pop@amd.com> + + * compareSumTests3: Changed to GPLv3. + * prepare_patch.sh: Same. + * uninclude: Same. + * dglib.pm: Same. + * gennews: Same. + * texi2pod.pl: Same. + * analyze_brprob: Same. + * gcc_build: Same. + +2007-12-26 Sebastian Pop <sebastian.pop@amd.com> + + * patch_tester.sh: Changed to GPLv3. + +2007-12-15 Sebastian Pop <sebastian.pop@amd.com> + + * patch_tester.sh: Don't save the script anymore. + +2007-12-15 Sebastian Pop <sebastian.pop@amd.com> + + * patch_tester.sh: New. + * prepare_patch.sh: New. + +2007-11-26 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: Introduce -p flag to preserve .stripped files. + +2007-10-08 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * texi2pod.pl: Handle @asis. + (postprocess): Move @gccoptlist{} after all formatting commands. + +2007-10-01 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: Avoid spurious errors when .stripped files + exist. + +2007-09-22 Hans-Peter Nilsson <hp@axis.com> + + * warn_summary (srcdirFilter): Add fixincludes, sim, + newlib and mpfr. + +2007-08-23 H.J. Lu <hongjiu.lu@intel.com> + + * gcc_update: Handle different URL paths and tags. + +2007-08-16 Alexandre Oliva <aoliva@redhat.com> + + * compare-debug: New. + +2007-08-16 H.J. Lu <hongjiu.lu@intel.com> + Andreas Schwab <schwab@suse.de> + + * gcc_update: Use "svn info" for revision number. Create + gcc/REVISION with branch name and revision number. + +2007-08-10 Diego Novillo <dnovillo@google.com> + + * gcc.doxy: Rename from tree-ssa.doxy. + +2007-08-10 Diego Novillo <dnovillo@google.com> + + * tree-ssa.doxy: Update for doxygen 1.5. + Include all the files in the middle and back ends. + +2007-06-30 Hans-Peter Nilsson <hp@axis.com> + + * gcc_update (files_and_dependencies): Handle + gcc/testsuite/gcc.dg/cpp/direct2s.c. + +2007-05-13 Mark Mitchell <mark@codesourcery.com> + + * gennews (files): Reference GCC 4.2 web pages. + +2007-04-04 Zack Weinberg <zack@mrtock.ucsd.edu> + + * texi2pod.pl: Correct handling of @itemize with no argument. + +2007-03-17 Hans-Peter Nilsson <hp@axis.com> + + * uninclude: New utility, from Alexandre Oliva. + +2007-02-26 Dominique Dhumieres <dominiq@lps.ens.fr> + + * test_installed: Adjust to the move from g77 to gfortran. + +2007-02-16 Matthias Klose <doko@debian.org> + + * texi2pod.pl: Handle @subsubsection, ignore @anchor. + +2007-02-10 Hans-Peter Nilsson <hp@axis.com> + + * test_summary (configflags): Adjust for changes in the + config.status format due to update to autoconf 2.59. + +2007-02-09 Daniel Jacobowitz <dan@codesourcery.com> + + * gcc_update: Update for configure.in -> configure.ac. + +2007-02-06 Richard Sandiford <richard@codesourcery.com> + + * texi2pod.pl: Handle @multitable. + +2007-01-15 Tom Tromey <tromey@redhat.com> + + * download_ecj: New file. + +2006-09-27 Matthew Sachs <msachs@apple.com> + + * compareSumTests3: POD syntax fix. + +2006-09-27 Matthew Sachs <msachs@apple.com> + + * dglib.pm: Initial commit. + * compareSumTests3: Initial commit. + +2006-09-18 Bernhard Fischer <aldot@gcc.gnu.org> + + * dg-cmp-results.sh (compare-$$.awk): Print name[old] + and not non-existing nm[old]. + +2006-07-06 Paul Eggert <eggert@cs.ucla.edu> + + Port to hosts whose 'sort' and 'tail' implementations + treat operands with leading '+' as file names, as POSIX + has required since 2001. However, make sure the code still + works on pre-POSIX hosts. + * compare_tests: Don't assume "sort +2" is equivalent to + "sort -k 3", since POSIX 1003.1-2001 no longer requires this. + +2006-06-05 James Lemke <jwlemke@wasabisystems.com> + + * dg-cmp-results.sh: New script for comparing DejaGNU logs. + +2006-06-02 Richard Earnshaw <rearnsha@arm.com> + Mike Stump <mrs@apple.com> + + * compare_tests: Handle multilibs better. + +2006-05-31 Daniel Jacobowitz <dan@codesourcery.com> + + * texi2pod.pl: Correct handling of absolute @include. + +2006-05-02 Daniel Jacobowitz <dan@codesourcery.com> + + * texi2pod.pl: Handle -I. + +2006-02-28 Mark Mitchell <mark@codesourcery.com> + + * gennews (files): Update for GCC 4.1. + +2006-01-24 Diego Novillo <dnovillo@redhat.com> + + * gcc_update (files_and_dependencies): Handle + libgomp/testsuite/Makefile.in. + +2006-01-18 Richard Henderson <rth@redhat.com> + Diego Novillo <dnovillo@redhat.com> + + * gcc_update (files_and_dependencies): Add libgomp files. + +2005-12-06 Ben Elliston <bje@au.ibm.com> + + * newcvsroot: Remove. + +2005-11-03 Steven Bosscher <stevenb@suse.de> + + * gcc_build: Fix my previous checking. + +2005-11-01 Joseph S. Myers <joseph@codesourcery.com> + + * gcc_update: Include revision number in LAST_UPDATED. + +2005-10-30 Steven Bosscher <stevenb@suse.de> + + * gcc_build: Use gcc.gnu.org as the default server. Set up + SVN_REPOSITORY correctly. Add support for checking out branches. + +2005-10-28 Andrew Pinski <pinskia@gcc.gnu.org> + + * gcc_update: When svn update is called and + --silent is used, pass -q. + +2005-10-28 Andrew Pinski <pinskia@gcc.gnu.org> + + * gcc_update: Remove the -q from svn invocation. + +2005-10-28 Andrew Pinski <pinskia@gcc.gnu.org> + + * gcc_build: Remove -d from the call to gcc_update. + +2005-10-28 Daniel Berlin <dberlin@dberlin.org> + Ben Elliston <bje@au1.ibm.com> + + * gcc_update: Update for svn. + * newcvsroot: Ditto. + * gcc_build: Ditto. + +2005-10-21 Mark Mitchell <mark@codesourcery.com> + + * texi2pod.pl: Substitue for @value even when part of @include. + +2005-10-21 Bob Wilson <bob.wilson@acm.org> + + * texi2pod.pl: Convert two single quotes or two backquotes to + double quotes. + +2005-08-23 Ben Elliston <bje@au.ibm.com> + + * gcc_update: Update dependencies for libjava/aclocal.m4. + +2005-08-14 Kelley Cook <kcook@gcc.gnu.org> + + * All files: Update with new FSF address. + +2005-07-14 Ben Elliston <bje@au.ibm.com> + + * filter_params.pl: Typo fix. + * filter_knr2ansi.pl: Likewise. + +2005-06-05 Gerald Pfeifer <gerald@pfeifer.com> + + * gennews (files): Update for egcs-1.0 release pages consolidation. + +2005-04-17 Joseph S. Myers <joseph@codesourcery.com> + + * gennews (files): Update for GCC 4.0. + +2005-03-18 Alexandre Oliva <aoliva@redhat.com> + + * gcc_update (silent): Unset instead of initializing to null. + +2005-03-18 Andreas Schwab <schwab@suse.de> + + * gcc_update (apply_patch): Properly quote $1. + +2005-03-18 Zack Weinberg <zack@codesourcery.com> + + * gcc_update: Add --silent option. + +2005-03-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * warn_summary (keywordFilter): Update sed pattern for new quoting + style in warnings. + +2005-03-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * warn_summary: Add -fortran subdir flag. + (subdirectoryFilter): Fix missing ada subdir. + +2004-11-20 Hans-Peter Nilsson <hp@bitrange.com> + + * gcc_update (touch_files): Don't rely on "make" being GNU make; + grep for "Touching" to determine that the rule executes. + +2004-11-14 Hans-Peter Nilsson <hp@bitrange.com> + + * gcc_update (touch_files): Explicitly pass --no-print-directory. + +2004-11-04 Andrew Pinski <pinskia@physics.uc.edu> + + * gcc_update (boehm-gc/aclocal.m4): Remove boehm-gc/acinclude.m4. + +2004-08-04 Paolo Bonzini <bonzini@gnu.org> + + * gcc_update: Add fixincludes. + +2004-08-26 Matthias Klose <doko@debian.org> + + * texi2pod.pl: keep references of the form @ref{...}, print them bold. + +2004-08-26 Matthias Klose <doko@debian.org> + + * test_summary: Include baseline used for libstdc++-v3 abi check + in test summary. + +2004-08-25 Ben Elliston <bje@au.ibm.com> + + * gcc_update (libcpp/Makefile.in): Remove libcpp/Makefile.am. + +2004-08-20 Andreas Tobler <a.tobler@schweiz.ch> + + * gcc_update (self): libjava/configure.in -> configure.ac. Automake + update done. + +2004-08-04 Paolo Bonzini <bonzini@gnu.org> + + * gcc_update: libjava/configure.ac -> configure.in. Automake + 1.4 does not handle configure.ac properly. + +2004-08-04 Andreas Schwab <schwab@suse.de> + + * gcc_update: libjava/configure.in -> configure.ac. + +2004-08-03 Richard Earnshaw <rearnsha@arm.com> + + * gcc_update: gcc/config/arm/arm-tune.md -> arm-cores.def gentune.sh. + +2004-07-16 Jeff Law <law@redhat.com> + + * analyze_brprob: Fix comments. More consistent output format. + +2004-06-17 Diego Novillo <dnovillo@redhat.com> + + * tree-ssa.doxy: Update for doxygen 1.3.5. + +2004-06-14 Andreas Jaeger <aj@suse.de> + + * gcc_update: boehm-gc/configure.in -> configure.ac. + +2004-06-16 Paolo Bonzini <bonzini@gnu.org> + + * gcc_update (boehm-gc/configure): Depend on + boehm-gc/configure.ac instead of boehm-gc/configure.in + +2004-06-14 Paolo Bonzini <bonzini@gnu.org> + + * gcc_update (libmudflap/configure): Depend on + libmudflap/configure.ac instead of libmudflap/configure.in + +2004-06-14 Andreas Jaeger <aj@suse.de> + + * gcc_update: Add libcpp. + +2004-06-10 Andreas Jaeger <aj@suse.de> + + * gcc_update: Add libgfortran. + +2004-05-29 Andrew Pinski <pinskia@physics.uc.edu> + + * gcc_update (libbanshee/configure): Depend on + libbanshee/configure.ac instead of libbanshee/configure.in + +2004-05-17 Zack Weinberg <zack@codesourcery.com> + + * gcc_update: Remove gcc/f/intdoc.texi and all libf2c files + from list of files to be touched. + * convert_to_f2c, convert_to_g2c, download_f2c: Delete. + +2004-05-15 Joseph S. Myers <jsm@polyomino.org.uk> + + * gennews: Update for GCC 3.4. + +2004-05-13 Diego Novillo <dnovillo@redhat.com> + + Merge from tree-ssa-20020619-branch. + + * filter_gcc_for_doxygen: New file. + * filter_knr2ansi.pl: New file. + * filter_params.pl: New file. + * tree-ssa.doxy: New file. + * contrib/gcc_update (files_and_dependencies): Handle + libbanshee and libmudflap. + +2004-04-12 Kelley Cook <kcook@gcc.gnu.org> + Andreas Jaeger <aj@suse.de> + + * gcc_update (files_and_dependencies): Insert zlib dependencies. + +2004-04-09 Nathanael Nerode <neroden@gcc.gnu.org> + + * gcc_update (files_and_dependencies): libobjc/configure now + depends on configure.ac, not configure.in. + +2004-04-01 Kelley Cook <kcook@gcc.gnu.org> + + * gcc_update (files_and_dependencies): Remove gcc/ada/*.texi. + +2004-03-16 Andreas Tobler <a.tobler@schweiz.ch> + + * gcc_update (files_and_dependencies): Insert libffi dependencies. + +2004-03-10 Kelley Cook <kcook@gcc.gnu.org> + + * gcc_update (files_and_dependencies): Insert libada/configure. + +2004-02-29 Andrew Pinski <pinskia@physics.uc.edu> + + * gcc_update (files_and_dependencies): Update intl/configure.in + to intl/configure.ac. + +2004-01-09 Kelley Cook <kcook@gcc.gnu.org> + + * gcc_update (files_and_dependencies): Update fastjar/configure.in + to fastjar/configure.ac + +2004-01-07 Kelley Cook <kcook@gcc.gnu.org> + + * gcc_update (files_and_dependencies): Remove non-existant files. + +2004-01-05 Kelley Cook <kcook@gcc.gnu.org> + + * gcc_update (files_generated): Revert 2003-12-18 change. + +2004-01-03 Andrew Pinski <pinskia@physics.uc.edu> + + * gcc_update (files_and_dependencies): For gcc directory, + rename configure.in to configure.ac. + +2003-12-19 Andreas Tobler <a.tobler@schweiz.ch> + + * gcc_update (files_and_dependencies): For libjava/libltdl directory, + remove acconfig.h. No longer used. + +2003-12-18 Kelley Cook <kcook@gcc.gnu.org> + + * gcc_update (files_generated): Add in gcc/ada/stamp-xgnatug and update + gcc/ada/gnat_ug_* to use it. + +2003-12-16 James E Wilson <wilson@specifixinc.com> + + * gcc_update (files_and_dependencies): For libjava/libltdl directory, + rename configure.in to configure.ac, and stamp-h.in to config-h.in. + +2003-12-11 Kelley Cook <kcook@gcc.gnu.org> + + * gcc_update (files_and_dependencies): Correct typo in the filename + gnat_ug_wnt.texi. + +2003-12-08 Arnaud Charlet <charlet@act-europe.fr + + * gcc_update: Remove handling of sinfo.h, einfo.h, nmake.ads, + treeprs.ads. + +2003-10-16 Mark Mitchell <mark@codesourcery.com> + + * gennews (files): Add GCC 3.3 files. + +2003-08-21 Mark Mitchell <mark@codesourcery.com> + + * gcc_build: Fix handling of -t option. Add -x option. + +2003-07-31 Matt Kraai <kraai@alumni.cmu.edu> + + * texi2pod.pl: Remove extra line. + +2003-07-15 Matt Kraai <kraai@alumni.cmu.edu> + + * texi2pod.pl: Default @itemize's parameter to @bullet. + +2003-07-12 Zack Weinberg <zack@codesourcery.com> + + * gcc_update: gcc/acconfig.h no longer exists. + +2003-07-11 Matthias Klose <doko@debian.org> + + * test_installed: Add options to run objc tests. + In generated site.exp, initialize rootme, CFLAGS, CXXFLAGS. + +2003-07-04 Zack Weinberg <zack@codesourcery.com> + + * gcc_update: Remove gcc/intl/plural.c from list. + Add new generated files intl/plural.c, intl/configure, + intl/config.h.in. + +2003-06-13 Jason Thorpe <thorpej@wasabisystems.com> + + * gcc_update (files_and_dependencies): Add + gcc/testsuite/gcc.dg/cpp/_Pragma3.c depends on + gcc/testsuite/gcc.dg/cpp/mi1c.h. + +2003-05-23 Nathanael Nerode <neroden@gcc.gnu.org> + + * paranoia.cc: Fix spelling error. + + * analyze_brprob, gcc_build, gennews, texi2pod.pl: Change GNU CC + to GCC. + +2003-04-04 Mike Stump <mrs@apple.com> + + * compare_tests: Fix exit status and be more flexible with spacing. + +2003-03-08 Phil Edwards <pme@gcc.gnu.org> + + * test_summary: Add -h, print existing comments as help. + +2003-03-03 H.J. Lu <hjl@gnu.org> + + * gcc_build: Use $GCC_CVS/$CVS instead of cvs. + * gcc_update: Likewise. + +2003-01-19 Alexandre Oliva <aoliva@redhat.com> + + * test_summary (configflags): Only use the first match. Remove + excess space. Use sub instead of gsub where possible. Use `none' + if no configure flags were given. + +2003-01-10 Loren J. Rittle <ljrittle@acm.org> + + * test_summary (configflags): awk portability. + +2003-01-07 Alexandre Oliva <aoliva@redhat.com> + + * test_summary (configflags): Compute correctly with both + autoconfiscated and Cygnus-style top-level. + +2003-01-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * gcc_update (files_and_dependencies): Add gcc/cp/cfns.h depends + on gcc/cp/cfns.gperf and gcc/java/keyword.h depends on + gcc/java/keyword.gperf + +2002-12-29 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gcc_update (files_and_dependencies): Add gcc/intl/plural.c as + depending on gcc/intl/plural.y. + +2002-12-28 Alexandre Oliva <aoliva@redhat.com> + + * gcc_update (configure): Depend on config/acx.m4 as well. + + * gcc_update (configure): Depend on configure.in. + +2002-12-24 Joseph S. Myers <jsm@polyomino.org.uk> + + * texi2pod.pl: Skip contents of @copying. + +2002-11-09 Zack Weinberg <zack@codesourcery.com> + + * gthr_supp_vxw_5x.c: New file. + +2002-10-21 Richard Henderson <rth@redhat.com> + + * paranoia.cc (real_c_float::image): Accomodate size of + real_internal format. + (main): Unbuffer stdio. Add real_internal format. + (floor_log2_wide): New. + +2002-10-16 Richard Henderson <rth@redhat.com> + + * paranoia.cc (ENUM_BITFIELD): New. + (class): Define as klass around real.h. + (real_c_float): Not a template any longer; define MODE as a + class static constant; use real_format elements for SIZE. + Update uses of real_to_decimal and real_to_hexadecimal. + (main): Change -g argument to use a format name. + (mode_for_size): Remove. + +2002-09-16 Richard Henderson <rth@redhat.com> + + * paranoia.cc: New file. + +2002-09-04 Richard Henderson <rth@redhat.com> + + * enquire.c: Remove. + +2002-08-14 Mark Mitchell <mark@codesourcery.com> + + * gennews (files): Add GCC 3.2 files. + +2002-07-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gennews (files): Add proper files for the GCC 3.1 release series. + Simplify and reformat introductory wording. + +2002-07-16 Nathanael Nerode <neroden@gcc.gnu.org> + + * enquire.c: Move from gcc. + +2002-07-16 H.J. Lu <hjl@gnu.org> + + * gcc_update (touch_files): Pass -s to ${MAKE}. + +2002-06-26 Zack Weinberg <zack@codesourcery.com> + + * texi2pod.pl: Correct handling of the internal R<> sequence. + +2002-05-31 Florian Weimer <fw@deneb.enyo.de> + + * gcc_update (files_and_dependencies): Add generated Texinfo files + for Ada. + +2002-05-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * test_installed: Allow for PWDCMD to override hardcoded pwd. + * test_summary: Likewise. + +2002-04-18 Geoffrey Keating <geoffk@redhat.com> + + * gcc_update (touch_files): Don't have empty for loop. + +2002-04-16 Richard Henderson <rth@redhat.com> + + * gcc_update: Remove libchill. + +2002-03-25 Zack Weinberg <zack@codesourcery.com> + + * texi2pod.pl: Handle @end ftable and @end vtable. + +2002-03-11 Zack Weinberg <zack@codesourcery.com> + + * texi2pod.pl: Handle @include, @ftable, @vtable. + Reformat some code for clarity. + +2002-02-24 Christian Jönsson <c.christian.joensson@telia.com> + + * test_summary: Additional to XPASS and FAIL, add UNRESOLVED, + WARNING and ERROR output from the *.sum files. + +2002-01-26 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gennews (files): Replace gcc-2.95/gcc-2.95.html, + gcc-2.95/gcc-2.95.1.html, gcc-2.95/gcc-2.95.2.html, + and gcc-2.95/gcc-2.95.3.html by gcc-2.95/index.html. + +2002-01-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gennews (files): Replace egcs-1.1/egcs-1.1.2.html, + egcs-1.1/egcs-1.1.1.html, and egcs-1.1/egcs-1.1.html by + egcs-1.1/index.html. + +2002-01-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * warn_summary: Add -ada subdirectory flag. + +2001-12-12 Matthias Klose <doko@debian.org> + + * texi2pod.pl: Merge changes from binutils' texi2pod.pl. Allows + generation of more than one man page from one source. + Add '-' to set of valid chars for an identifier. + Let -D option accept flags of the form <flag>=<value>. + Use \s+ for whitespace detection in '@c man' lines. + Handle @set and @clear independent of $output. + Substitute all @value{}'s in a line. + +2001-11-14 Joseph S. Myers <jsm28@cam.ac.uk> + + * texi2pod.pl: Handle @ifnottex, @iftex and @display. Handle @var + in verbatim blocks specially. Handle @unnumbered, @unnumberedsec + and @center. Allow [a-z] after @enumerate. Handle 0 and numbers + greater than 9 in enumerations. + +2001-11-07 Laurent Guerby <guerby@acm.org> + + * gcc_update (files_and_dependencies): Add Ada dependencies. + +2001-10-08 Joseph S. Myers <jsm28@cam.ac.uk> + + * snapshot: Remove. + +2001-09-07 Richard Sandiford <rsandifo@redhat.com> + + Revert: + * gcc_update: (files_and_dependencies) Add gcc/java/parse.c + gcc/java/parse-scan.c and gcc/java/keyword.h to list of files to + touch. + +2001-09-04 David.Billinghurst <David.Billinghurst@riotinto.com> + + * gcc_update: (files_and_dependencies) Add gcc/java/parse.c + gcc/java/parse-scan.c and gcc/java/keyword.h to list of files to + touch. + +Mon Aug 13 02:29:08 CEST 2001 Jan Hubicka <jh@suse.cz> + + * analyze_brprob: Update for changes in gcc debug output. + +Sat Jul 28 22:37:49 CEST 2001 Jan Hubicka <jh@suse.cz> + + * analyze_brprob: Avoid more overflows. + +2001-07-27 Richard Henderson <rth@redhat.com> + + * test_summary: Copy LAST_UPDATED UTC time to head of summary. + +Fri Jul 27 18:01:21 CEST 2001 Jan Hubicka <jh@suse.cz> + + * analyze_brprob: Avoid overflows. + +2001-07-27 Richard Henderson <rth@redhat.com> + + * gcc_update: Dump timestamp in LAST_UPDATED. + +2001-07-26 Andreas Jaeger <aj@suse.de>, + Hans-Peter Nilsson <hp@bitrange.com> + + * analyze_brprob: Fix documentation. + +Mon Jul 23 15:47:19 CEST 2001 Jan Hubicka <jh@suse.cz> + + * analyze_brprob: Fix awk compatibility problems; update comment. + +2001-07-23 Andreas Jaeger <aj@suse.de> + + * analyze_brprob: Fix more typos. + +2001-07-23 Andreas Jaeger <aj@suse.de> + + * analyze_brprob: Fix typos. + +2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk> + + * texi2pod.pl: Handle @r inside @item. + +2001-07-02 Zack Weinberg <zackw@stanford.edu> + + * gcc_update: Remove entries for gcc.1, cpp.1, gcov.1. + +2001-07-01 Zoltan Felleg <zfelleg@telnet.hu> + + * warn_summary: Fix typo in a comment. + +2001-06-14 Albert Chin-A-Young <china@thewrittenword.com> + + * contrib/gcc_update: Fix timestamp on gcc/f/intdoc.texi. + +2001-06-13 Mark Mitchell <mark@codesourcery.com> + + * gennews: Set TERM to vt100 for Lynx. + +2001-06-13 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * release: Remove. + +Tue Jun 12 12:21:40 CEST 2001 Jan Hubicka <jh@suse.cz> + + * analyze_brprob: New file. + +2001-06-11 Mark Mitchell <mark@codesourcery.com> + + * gcc_build: Output information about the commands used to + configure the compiler. + +2001-06-07 Joseph S. Myers <jsm28@cam.ac.uk> + + * gennews: Update for GCC 3.0. + +2001-06-02 Joseph S. Myers <jsm28@cam.ac.uk> + + * gcc_update: Update for move of documentation to gcc/doc. + +2001-05-28 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * contrib/test_summary (files): Sort before evaluating. + +2001-05-23 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gcc_update (UPDATE_OPTIONS): Add -d to the default settings. + +2001-05-21 Mark Mitchell <mark@codesourcery.com> + + * gcc_build: Use -d when invoking gcc_update. + +2001-05-18 Andreas Jaeger <aj@suse.de> + + * gcc_update: Add rules for libf2c/libI77. + +2001-05-17 Alexandre Oliva <aoliva@redhat.com> + + * gcc_update (touch_files): Use simpler, yet as portable, syntax. + +2001-05-14 Loren J. Rittle <ljrittle@acm.org> + + * gcc_update (touch_files): Enhance make portability. + +2001-05-14 Alexandre Oliva <aoliva@redhat.com> + + * gcc_update (touch_files): Use a Makefile to touch files. + +2001-05-03 Joseph S. Myers <jsm28@cam.ac.uk> + + * texi2pod.pl: Add copyright and GPL notices. + +2001-01-24 Joseph S. Myers <jsm28@cam.ac.uk> + + * texi2pod.pl: Handle "\,". + +2001-01-15 Joseph S. Myers <jsm28@cam.ac.uk> + + * texi2pod.pl: Fix regular expression for @r to avoid exponential + recursion. From Russ Allbery <rra@stanford.edu>. Remove perl + version check. + +2001-01-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * warn_summary (stageNfilter): Update for recent changes in + bootstrap logic. + +2001-01-14 Joseph S. Myers <jsm28@cam.ac.uk> + + * texi2pod.pl: Require at least perl 5.6.0. + +2001-01-13 Joseph S. Myers <jsm28@cam.ac.uk> + + * gcc_update: Add gcc/gcc.1 to generated files. + * texi2pod.pl: Handle @r and @gccoptlist. Handle @gol. Handle + discarding to end of sentence with @xref where the sentence has an + interior "." in markup, and handle discarding parentheses around + such a sentence. + +2001-01-11 Bernd Schmidt <bernds@redhat.com> + + * gennews: Add gcc-2.95.3. + +2001-01-10 Joseph S. Myers <jsm28@cam.ac.uk> + + * texi2pod.pl: Handle @gcctabopt and @env in tables. Handle + @command. Format URLs and email addresses in bold. + +2001-01-03 Joseph S. Myers <jsm28@cam.ac.uk> + + * gcc_update: Add cpp.1 to the list of generated files. + + * texi2pod.pl: Handle @option and @env. + +2001-01-03 Mike Stump <mrs@wrs.com> + + * snapshot: Update to account for java libraries. + +2000-12-28 Jeffrey Oldham <oldham@codesourcery.com> + + * test_summary: Export filesuffix, not fileprefix. + +2000-12-22 Joseph S. Myers <jsm28@cam.ac.uk> + + * release: Change some EGCS references to GCC. + +2000-12-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * warn_summary: Fix subdirectory filtering. Add -intl and -fixinc + subdirectory flags. Add source directory prefix filtering. + Redirect diagnostic output to stderr. + +2000-12-07 Zack Weinberg <zack@wolery.stanford.edu> + + * texi2pod.pl: If multiple @c man sections with the same tag + appear, concatenate them in the final output. When skipping, + ignore block commands that can't cause skipping, and honor + those that can. Ensure that verbatim blocks are separate + paragraphs. + +2000-12-07 Joseph S. Myers <jsm28@cam.ac.uk> + + * gcc_update: Don't touch tradcif.c or java/parse.h. + +2000-12-05 Zack Weinberg <zack@wolery.stanford.edu> + + * texi2pod.pl: Restructure for comprehensibility, add + comments. Merge handling of @ignore and @ifxxx. Handle a + whole bunch more Texinfo commands. Use consistent formatting + style. + +2000-12-04 Joseph S. Myers <jsm28@cam.ac.uk> + + * gennews: New script. + +2000-11-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gcc_update: Update a comment as we now require bison for CVS users. + +2000-11-22 Joseph S. Myers <jsm28@cam.ac.uk> + + * gcc_update: Add gcov.1 to the list of generated files. + +2000-11-21 Mark Mitchell <mark@codesourcery.com> + + * gcc_build: Remove code to put information in a log file. + +2000-11-19 Zack Weinberg <zackw@stanford.edu> + + * texi2pod.pl: + - Add real command line parsing. + - Support @ifset, @ifclear, @set, @value, -D switch. + - Support @sc. Improve handling of @ref and friends. + - Discard @subsection, @need, @node lines. + - Un-nest font changes to match texinfo semantics. + - Handle @{ and @}. Oops. + - Don't emit E<> directives inside verbatim blocks. + +2000-11-12 Bruce Korb <bkorb@gnu.org> + + * release: generalize the release script a bit. + +Sat Nov 11 17:29:03 2000 Mark P Mitchell <mark@codesourcery.com> + + * gcc_build: Add -o option for setting the objdir to use. + +2000-11-11 Jeff Law <law@redhat.com>, + + * release: New file. + +2000-11-08 Jeff Law <law@redhat.com>, + Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * snapshot: New file. + +2000-11-08 Jeffrey Oldham <oldham@oz.codesourcery.com> + + * gcc_build (bootstrap_gcc): New function. + (configure_gcc): Likewise. + (build_gcc): Rewritten to use configure and bootstrap. + (MAKE_BOOTSTRAP_OPTIONS): Replaced MAKE_OPTIONS. + +2000-10-31 Mark Mitchell <mark@codesourcery.com> + + * gcc_build (MAKE): New variable. + (build_gcc): Use it. Fix logging of errors. + (install_gcc): Likewise. + +2000-10-29 Mark Mitchell <mark@codesourcery.com> + + * gcc_build: Save the output from CVS into the logfile as well. + +2000-10-25 Mark Mitchell <mark@codesourcery.com> + + * gcc_build: Fix typos. + +2000-10-14 Joseph S. Myers <jsm28@cam.ac.uk> + + * gperf-2.7-19981006.pat: Remove. + +2000-10-08 Joseph S. Myers <jsm28@cam.ac.uk> + + * test_installed: Change EGCS references to refer to GCC. + +2000-09-28 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gcc_update (touch_files): Add some informative output. + +2000-09-16 Andreas Jaeger <aj@suse.de> + + * gcc_update: Remove gcc/c-parse.gperf. + +2000-08-30 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, + Alexandre Oliva <aoliva@redhat.com> + + * gcc_update: Execute touch_files_reexec even if `cvs update` + failed. + +2000-08-09 Alexandre Oliva <aoliva@redhat.com> + + * test_summary: AWK breaks with filenames containing `='. + +Sun Jul 16 12:04:33 2000 Mark P Mitchell <mark@codesourcery.com> + + * gcc_build: New script. + +2000-07-13 Mark Mitchell <mark@codesourcery.com> + + * gcc_update (files_and_dependencies): Remove generated YACC files. + +2000-07-12 Mark Mitchell <mark@codesourcery.com> + + * gcc_update (files_and_dependencies): Remove generated YACC files. + +2000-06-04 Mark Mitchell <mark@codesourcery.com> + + * newcvsroot: Handle filenames that contain spaces. + +2000-06-03 Zack Weinberg <zack@wolery.cumb.org> + + * test_summary: In generated script, use cat <<'EOF' not cat <<\EOF. + Elide --with-gcc-version-trigger and --norecursion from + configure flags. Remove code to report status of haifa scheduler. + +2000-05-18 Alexandre Oliva <aoliva@cygnus.com> + + * gcc_update (self): Set to `$0'. + (touch_files_reexec): Use `$self' instead of `$0'. + +2000-05-12 Alexandre Oliva <aoliva@cygnus.com> + + * gcc_update (touch_files_reexec): New function, run after the + tree is modified. + +2000-05-08 Richard Hendeson <rth@cygnus.com> + + * gcc_update: Remove references to inclhack.tpl. + +2000-04-28 Jason Merrill <jason@casey.cygnus.com> + + * index-prop: Use a single pattern. Also support *** cdiffs. + +2000-04-28 Pavel Roskin <pavel_roskin@geocities.com> + + * index-prop: Don't change /dev/null. + +2000-04-27 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gcc_update: Refer to GCC and gcc_update instead of egcs and + egcs_update. + +2000-04-26 Jonathan Larmour <jlarmour@redhat.co.uk> + + * index-prop: Fix occasional problem when using cvs diff -p. + +2000-04-18 Zack Weinberg <zack@wolery.cumb.org> + + * gcc_update: Remove references to cexp.c/cexp.y. + +1999-12-18 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * newcvsroot: Add check on the number of command-line arguments. + Add usage. + +Sun Nov 28 00:41:44 1999 William Bader (william@nscs.fast.net) + + * gcc_update: Allow patches compressed by bzip2. + +1999-10-11 Martin v. Löwis <loewis@informatik.hu-berlin.de> + + * newcvsroot: New file. + +1999-09-11 Craig Burley <craig@jcb-sc.com> + + * convert_to_f2c, convert_to_g2c, download_f2c: New file. + +1999-08-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * gcc_update: New file. + * egcs_update: Renamed to gcc_update. + +1999-08-09 Robert Lipe <robertlipe@usa.net> + + * test_summary: Quote curly braces in 1999-07-03 change. + +1999-07-28 Alexandre Oliva <oliva@dcc.unicamp.br> + + * egcs_update (files_and_dependencies): Fixed typo in + gcc/cstamp-h.in. Added gcc/config.in. + +1999-07-27 Alexandre Oliva <oliva@dcc.unicamp.br> + + * egcs_update (files_and_dependencies): New function, with + complete list of files to be updated, as well as their + dependencies. + (touch_files): Check the timestamp of each generated file against + its dependencies'. + (main): New flags --touch, --list and --help. Remove the + pre-update step. + +1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary: Replace egcs with gcc. Update e-mail address. + +1999-07-05 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + Jerry Quinn <jquinn@nortelnetworks.com> + + * egcs_update (touch_files, apply_patch): New functions. + Use them. New command-line option --patch. Split test of local + tree into two parts. Add comments. + +1999-07-03 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary: If Target is `unix{*}', append the Target variants + to Host. + +1999-06-12 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary: Set default mail-address and version for egcs + instead of relying on unpredictable pathnames. + Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de> + +Fri Apr 2 16:09:02 1999 Jeffrey A Law (law@cygnus.com) + + * fixinc/*: Delete obsolete files. + +1999-02-04 Robert Lipe <robertlipe@usa.net> + + * egcs_update: Test return values of 'cvs update'. Propogate + to caller as exit values. + +1999-01-25 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * egcs_update: Use "if" instead of "&&". Touch generated files + only after the corresponding *.y files. + +1999-01-19 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * egcs_update: Do not use xargs, but a backquote construct. + +1999-01-07 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary (version): Remove carriage return that gawk inserts + in the version string for some reason. + +1998-11-30 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * egcs_update: Only touch files that already exist. + +1998-11-29 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary (EOF): Remove double backslash. + Reported by Franz Sirl <Franz.Sirl-kernel@lauterbach.com> + +1998-11-28 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary (address): Set to egcs-testresults mailing list. + +1998-11-27 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary (address): Added Marc Lehmann's testsuite-results + to the default e-mail address. + +1998-11-25 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary (-p, prepend_logs): Add these before the summary. + (Compiler, Platform): Print these just before configflags. + +Sat Oct 31 10:53:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * warn_summary (longLineFilter): New shell function to encapsulate + this functionality. It is off by default, only active if -llf + flag is specified. + (subdirectoryFilter): Fix bug in filtering which made some + subdirectory warnings erroneously appear in the toplevel set. + (stageNfilter): Renamed from `stageNwarns'. Updated to collect + warnings from stage1 as well as stage0, which means warnings from + outside the bootstrap directory. Eg, the libraries, etc. + (warningFilter): New shell function to encapsulate this + functionality. + (keywordFilter): New shell function to encapsulate this + functionality. + + Store data in a temp file rather than calculating it 3x. Arrange + to remove it on exit and signals. + + Add -pass/-wpass flags to do "pass through" (i.e. manual + inspection) of bootstrap output from a particular stageN as well + as language subdirs. + + Add better comments/documentation. + +Sat Oct 31 16:39:31 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * egcs_update: Add comment about keeping the FAQ synchronized. + +Fri Oct 30 00:39:27 1998 Jeffrey A Law (law@cygnus.com) + + * egcs_update: Do touch java/parse.c and java/parse-scan.c. They're + in the repo again. + +Fri Oct 16 07:35:00 1998 Bruce Korb <korb@datadesign.com> + + * egcs_update: Added gcc/fixinc/* generated files to touch list. + +Tue Oct 13 23:28:33 1998 Jeffrey A Law (law@cygnus.com) + + * egcs_update: Remove gcc/java/parse.c from list of files to + touch. + +Wed Oct 7 13:00:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * gperf-2.7-19981006.pat: New file, patch for egcs-local gperf. + +Mon Oct 5 14:19:48 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * warn_summary (subdirectoryFilter): New shell function to + optionally filter in/out gcc subdirectories when summarizing + warnings. Add new flags to support subdirectory filtering. + + Also, ensure the bootstrap stage is a number. Add some more C + keywords that are preserved in the "warning type" summary and + tighten up the "arg ???" regexp. + +Tue Sep 22 07:30 Bruce Korb <korb@datadesign.com> + + * fixinc/inclhack.def: Not all C++ comments in C headers + were treated alike. They are now. Also fixed syntax + of sed expression in "systypes" fix. + + * fixinc/inclhack.def: Removed SVR4.2-ism from shell invocation + + * egcs_update: Added fixinc/* generated files to touch list. + +Wed Sep 16 16:06:51 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * egcs_update: Additionally touch gcc/java/parse.[ch]. + +Thu Sep 9 16:48 Bruce Korb <korb@datadesign.com> + + * fixinc/inclhack.def: Added two files required by + SCO's Open Server 5's avoid_bool fix. + Regenerated fixinc.x and inclhack.sh to incorporate + the update. + +Thu Sep 3 10:11:32 1998 Robert Lipe <robertl@dgii.com> + + * egcs_update: Do the pass 1 CVS update only for files that + may reasonably be under CVS control. + +1998-08-14 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_installed: New script for testing already-installed + gcc/g++/g77. + +Wed Aug 12 19:59:36 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * egcs_update: Assigned copyright to FSF. + +Tue Aug 11 17:55:53 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + Alexandre Oliva <oliva@dcc.unicamp.br> + + * egcs_update: New switch --nostdflags and documentation + enhancements. + +Tue Aug 11 17:33:19 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * egcs_update: New script. + +1998-08-05 Bruce Korb <korbb@datadesign.com> + + * fixinc/Makefile + Added define for target machine so machine-specific tests + can be selected for or against. + + * fixinc/fixincl.c + Added an array of string pointers to machines to select + or avoid, depending on a FD_MACH_IFNOT bit flag. + Used a shell script to match the defined TARGET_MACHINE + with any of the given match patterns. + + * fixinc/fixincl.tpl + Generate the array of strings and bit flag, as needed, + depending on "mach" and "not_machine" attributes for a fix. + + * fixinc/mkfixinc.sh + Invoke the make with TARGET assigned the value of the + machine name argument. + +Mon Jul 27 22:08:12 1998 Mike Stump (mrs@wrs.com) + + * compare_tests: New script. + +1998-07-28 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary: Assigned copyright to FSF. + +Mon Jul 27 20:33:02 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + + * test_summary: Corrected script name in comments providing + documentation. Added linebreaks for lines with > 80 characters. + +Fri Jun 19 02:36:59 1998 Alexandre Oliva <oliva@dcc.unicamp.br> + + * test_summary: New switch, -i, and environment variable, + append_logs, for including files in the report. + +1998-06-01 Manfred Hollstein <manfred@s-direktnet.de> + + * warn_summary: Update to Kaveh's latest version allowing to + specify the last stage built. + +1998-05-29 Bruce Korb <korbb@datadesign.com> + + * fixinc/mkfixinc.sh + Changes to make it easier to invoke on platforms that + normally do not invoke fixincludes. + + * fixinc/inclhack.def + Applied fixes from egcs/gcc/fixincludes from the past several + months. + +1998-05-28 Bruce Korb <korbb@datadesign.com> + + * fixinc/*: Updated most everything for a first real + try at getting "fast_fixincludes" working. + +1998-05-28 Jason Merrill <jason@yorick.cygnus.com> + + * index-prop: New file. + +Sat May 23 23:38:49 1998 Matthias Klose <doko@cs.tu-berlin.de> + + * test_summary: find good awk (copied from warn_summary). + +Sat May 23 23:38:33 1998 Jeffrey A Law (law@cygnus.com) + + * test_summary, warn_summary: New files diff --git a/gcc-4.8.3/contrib/ChangeLog.tree-ssa b/gcc-4.8.3/contrib/ChangeLog.tree-ssa new file mode 100644 index 000000000..2c1165f79 --- /dev/null +++ b/gcc-4.8.3/contrib/ChangeLog.tree-ssa @@ -0,0 +1,46 @@ +2004-03-25 Diego Novillo <dnovillo@redhat.com> + + * gcc_update (files_and_dependencies): Add libbanshee and + libmudflap dependencies. + +2003-11-27 Diego Novillo <dnovillo@redhat.com> + + * tree-ssa.doxy (FILE_PATTERNS): Update. + +2003-11-21 Diego Novillo <dnovillo@redhat.com> + + * tree-ssa.doxy: Do not generate latex output. + +2003-07-21 Diego Novillo <dnovillo@redhat.com> + + * tree-ssa.doxy: Include tree* files + +2003-07-15 Diego Novillo <dnovillo@redhat.com> + + * tree-ssa.doxy: Add tree-must-alias.c. + +2003-01-28 Diego Novillo <dnovillo@redhat.com> + + * filter_params.pl: Surround comments in @verbatim/@endverbatim. + +2003-01-19 Diego Novillo <dnovillo@redhat.com> + + * tree-ssa.doxy (OUTPUT_DIRECTORY, INPUT_FILTER): Replace + hardwired values for with replaceable strings. + +2003-01-18 Diego Novillo <dnovillo@redhat.com> + + * filter_params.pl: Change most comments to start with /**. + +2002-12-23 Steven Bosscher <Steven.Bosscher@usafa.af.mil> + + * filter_params.pl: Filter ATTRIBUTE_UNUSED. + +2002-12-12 Daniel Berlin <dberlin@dberlin.org> + Steven Bosscher <Steven.Bosscher@usafa.af.mil> + Diego Novillo <dnovillo@redhat.com> + + * filter_gcc_for_doxygen: New file. + * filter_knr2ansi.pl: New file. + * filter_params.pl: New file. + * tree-ssa.doxy: New file. diff --git a/gcc-4.8.3/contrib/analyze_brprob b/gcc-4.8.3/contrib/analyze_brprob new file mode 100755 index 000000000..093c1dea7 --- /dev/null +++ b/gcc-4.8.3/contrib/analyze_brprob @@ -0,0 +1,146 @@ +#!/usr/bin/awk -f +# Script to analyze experimental results of our branch prediction heuristics +# Contributed by Jan Hubicka, SuSE Inc. +# Copyright (C) 2001, 2003 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# +# This script is used to calculate two basic properties of the branch prediction +# heuristics - coverage and hitrate. Coverage is number of executions of a given +# branch matched by the heuristics and hitrate is probability that once branch is +# predicted as taken it is really taken. +# +# These values are useful to determine the quality of given heuristics. Hitrate +# may be directly used in predict.c. +# +# Usage: +# Step 1: Compile and profile your program. You need to use -fprofile-arcs +# flag to get the profiles +# Step 2: Generate log files. The information about given heuristics are +# saved into *.bp dumps. You need to pass the -db switch to the compiler as well +# as -fbranch-probabilities to get the results of profiling noted in the dumps. +# Ensure that there are no "Arc profiling: some edge counts were bad." warnings. +# Step 3: Run this script to concatenate all *.life files: +# analyze_brprob `find . -name *.life` +# the information is collected and print once all files are parsed. This +# may take a while. +# Note that the script does use bc to perform long arithmetic. +# Step 4: Read the results. Basically the following table is printed: +# (this is just an example from a very early stage of branch prediction pass +# development, so please don't take these numbers seriously) +# +#HEURISTICS BRANCHES (REL) HITRATE COVERAGE (REL) +#opcode 2889 83.7% 94.96%/ 97.62% 7516383 75.3% +#pointer 246 7.1% 99.69%/ 99.86% 118791 1.2% +#loop header 449 13.0% 98.32%/ 99.07% 43553 0.4% +#first match 3450 100.0% 89.92%/ 97.27% 9979782 100.0% +#loop exit 924 26.8% 88.95%/ 95.58% 9026266 90.4% +#error return 150 4.3% 64.48%/ 86.81% 453542 4.5% +#call 803 23.3% 51.66%/ 98.61% 3614037 36.2% +#loop branch 51 1.5% 99.26%/ 99.27% 26854 0.3% +#noreturn call 951 27.6% 100.00%/100.00% 1759809 17.6% +# +# The heuristic called "first match" is a heuristic used by GCC branch +# prediction pass and it predicts 89.92% branches correctly. +# +# The quality of heuristics can be rated using both, coverage and hitrate +# parameters. For example "loop branch" heuristics (predicting loopback edge +# as taken) have both very high hitrate and coverage, so it is very useful. +# On the other hand, "exit block" heuristics (predicting exit edges as not +# taken) have good hitrate, but poor coverage, so only 3 branches have been +# predicted. The "loop header" heuristic has problems, since it tends to +# misspredict. +# +# The implementation of this script is somewhat brute force. My awk skills +# are limited. + +function longeval(e) +{ + e = "echo \"scale = 2 ;"e"\" | bc" + e | getline res + close (e) + return res +} + +BEGIN {nnames = 0} + +/^ .* heuristics: .*.$/ { + name=$0 + sub (/^ /,"",name) + sub (/ heuristics: .*.$/,"",name) + if (!(name in branches)) + { + names[nnames] = name + branches[name]=0 + counts[name]=0 + hits[name]=0 + phits[name]=0 + nnames++ + } + branches[name]+=1 + } + +/^ .* heuristics: .*. exec [0-9]* hit [0-9]* (.*.)$/ { + name=$0 + sub (/^ /,"",name) + sub (/ heuristics: .*. exec [0-9]* hit [0-9]* (.*.)$/,"",name) + pred=$0 + sub (/^ .* heuristics: /,"",pred) + sub (/. exec [0-9]* hit [0-9]* (.*.)$/,"",pred) + count=$0 + sub (/^ .* heuristics: .*. exec /,"",count) + sub (/ hit [0-9]* (.*.)$/,"",count) + hit=$0 + sub (/^ .* heuristics: .*. exec [0-9]* hit /,"",hit) + sub (/ (.*.)$/,"",hit) + + if (int(pred) < 50.0) + { + hit = count"-"hit; + } + counts[name]=counts[name] "+" count + hits[name]=hits[name] "+" hit + phits[name]=phits[name] "+(("hit")<"count"/2)*("count"-("hit"))+(("hit")>="count"/2)*("hit")" + + #BC crashes on long strings. Irritating. + if (length(counts[name]) > 2000) + counts[name] = longeval(counts[name]) + if (length(hits[name]) > 2000) + hits[name] = longeval(hits[name]) + if (length(phits[name]) > 2000) + phits[name] = longeval(phits[name]) + } +END { + # Heuristics called combined predicts just everything. + maxcounts = longeval(counts["combined"]) + maxbranches = branches["combined"] + max = names["combined"] + printf("HEURISTICS BRANCHES (REL) HITRATE COVERAGE (REL)\n") + for (i = 0; i < nnames ; i++) + { + name = names[i] + counts[name] = longeval(counts[name]) + printf ("%-26s %8i %5.1f%% %6s%% / %6s%% %12s %5.1f%%\n", + name, + branches[name], branches[name] * 100 / maxbranches, + longeval("("hits[name]") * 100 /(" counts[name]"-0.00001)"), + longeval("("phits[name]") * 100 /(" counts[name]"-0.00001)"), + counts[name], longeval(counts[name]" * 100 / ("maxcounts"-0.00001)")) + } +} diff --git a/gcc-4.8.3/contrib/check_GNU_style.sh b/gcc-4.8.3/contrib/check_GNU_style.sh new file mode 100755 index 000000000..ef8fdda6d --- /dev/null +++ b/gcc-4.8.3/contrib/check_GNU_style.sh @@ -0,0 +1,124 @@ +#!/bin/sh + +# Checks some of the GNU style formatting rules in a set of patches. +# Copyright (C) 2010, 2012 Free Software Foundation, Inc. +# Contributed by Sebastian Pop <sebastian.pop@amd.com> + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +usage() { + cat <<EOF +check_GNU_style.sh [patch]... + + Checks the patches for some of the GNU style formatting problems. + Please note that these checks are not always accurate, and + complete. The reference documentation of the GNU Coding Standards + can be found here: http://www.gnu.org/prep/standards_toc.html + and there are also some additional coding conventions for GCC: + http://gcc.gnu.org/codingconventions.html + +EOF + exit 1 +} + +test $# -eq 0 && usage + +tmp=check_GNU_style.tmp + +# Remove $tmp on exit and various signals. +trap "rm -f $tmp" 0 +trap "rm -f $tmp ; exit 1" 1 2 3 5 9 13 15 + +# Grep +g (){ + msg="$1" + arg="$2" + shift 2 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | egrep --color=always -- "$arg" \ + > $tmp && printf "\n$msg\n" + cat $tmp +} + +# And Grep +ag (){ + msg="$1" + arg1="$2" + arg2="$3" + shift 3 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | egrep --color=always -- "$arg1" \ + | egrep --color=always -- "$arg2" \ + > $tmp && printf "\n$msg\n" + cat $tmp +} + +# reVerse Grep +vg (){ + msg="$1" + varg="$2" + arg="$3" + shift 3 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | egrep -v -- "$varg" \ + | egrep --color=always -- "$arg" \ + > $tmp && printf "\n$msg\n" + cat $tmp +} + +col (){ + msg="$1" + shift 1 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | cut -f 2 -d '+' \ + | awk '{ if (length ($0) > 80) print $0 }' \ + > $tmp + if [ -s $tmp ]; then + printf "\n$msg\n" + cat $tmp + fi +} + +col 'Lines should not exceed 80 characters.' $* + +g 'Trailing whitespace.' \ + '[[:space:]]$' $* + +g 'Space before dot.' \ + '[[:alnum:]][[:blank:]]+\.' $* + +g 'Dot, space, space, new sentence.' \ + '[[:alnum:]]\.([[:blank:]]|[[:blank:]]{3,})[[:alnum:]]' $* + +g 'Dot, space, space, end of comment.' \ + '[[:alnum:]]\.([[:blank:]]{0,1}|[[:blank:]]{3,})\*/' $* + +g 'Sentences should end with a dot. Dot, space, space, end of the comment.' \ + '[[:alnum:]][[:blank:]]*\*/' $* + +vg 'There should be exactly one space between function name and parentheses.' \ + '\#define' '[[:alnum:]]([^[:blank:]]|[[:blank:]]{2,})\(' $* + +g 'There should be no space before closing parentheses.' \ + '[[:graph:]][[:blank:]]+\)' $* + +ag 'Braces should be on a separate line.' \ + '\{' 'if[[:blank:]]\(|while[[:blank:]]\(|switch[[:blank:]]\(' $* + + diff --git a/gcc-4.8.3/contrib/check_makefile_deps.sh b/gcc-4.8.3/contrib/check_makefile_deps.sh new file mode 100644 index 000000000..fd739a114 --- /dev/null +++ b/gcc-4.8.3/contrib/check_makefile_deps.sh @@ -0,0 +1,94 @@ +#! /bin/sh +# +# Check for accurate dependencies in gcc/Makefile.in. +# +# Copyright (C) 2008, 2012 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 +# +# Start this script in an up to date build-tree/gcc directory. +# Using it in stage1 only works if the host compiler is GCC. + +# To continue an interrupted check, make sure there are no *.o.backup +# files lying around (i.e., move them back to their original name), +# and set $start_after to the name of the last object that should be skipped. +start_after= + +# Skip some objects unconditionally; make sure each name in this list is +# surrounded by spaces. +skip=" crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o crtfastmath.o crtprec64.o crtprec80.o crtprec32.o ecrti.o ecrtn.o ncrti.o ncrtn.o " + +# Files which show up as dependencies other than through unconditional #include. +# This is an egrep pattern. +hidden_dep_files='(BASE-VER|DATESTAMP|DEV-PHASE|Makefile|xcoffout\.h|basic-block\.h|bconfig\.h)$' + +: ${MAKE=make} +: ${EGREP="grep -E"} + +# ------------------------------------------------------------------------- +# There should be no need for changes beyond this point. + +set -e +st=0 + +if test -f c-family/c-common.o; then :; else + echo "$0: rerun in an up to date build-tree/gcc directory" >&2 + exit 1 +fi + +for obj in *.o +do + if test -n "$start_after"; then + if test $obj = $start_after; then + start_after= + fi + continue + fi + case $skip in *\ $obj\ *) continue ;; esac + + mv -f $obj $obj.backup + ${MAKE} $obj CFLAGS='-MM -MF depfile' + mv -f $obj.backup $obj + ${MAKE} -t + LC_ALL=C ${MAKE} -d $obj >make-d-log + hdrs=`cat depfile` + for hdr in $hdrs; do + case $hdr in + *: | *.o | \\ | /* ) ;; + *) + echo $hdr ;; + esac + done < depfile | + LC_ALL=C sort -u > hdrs + + + sed -n '/.*Prerequisite..\([^ ]*\). is newer than target .'"$obj"'.*/s//\1/p' \ + < make-d-log | + LC_ALL=C sort -u > not-up-to-date + if test -s not-up-to-date; then + st=1 + echo "$0: error: prerequisites for $obj are not up to date:" >&2 + cat not-up-to-date >&2 + fi + sed -n '/.*Prerequisite..\([^ ]*\). is older than target .'"$obj"'.*/s//\1/p' \ + < make-d-log | + LC_ALL=C sort -u > deps + missing_deps=`LC_ALL=C join -v 1 hdrs deps` + unneeded_deps=`LC_ALL=C join -v 2 hdrs deps | $EGREP -v "$hidden_dep_files" || :` + if test -n "$missing_deps"; then + st=1 + echo "missing deps for $obj:" + echo "$missing_deps" | sed 's/^/ /' + fi + if test -n "$unneeded_deps"; then + # unneeded dependencies are not a big problem, so they cause no failure. + echo "unneeded deps for $obj:" + echo "$unneeded_deps" | sed 's/^/ /' + fi +done +exit $st + +# vi:sw=2: diff --git a/gcc-4.8.3/contrib/check_warning_flags.sh b/gcc-4.8.3/contrib/check_warning_flags.sh new file mode 100755 index 000000000..d9c5735ab --- /dev/null +++ b/gcc-4.8.3/contrib/check_warning_flags.sh @@ -0,0 +1,180 @@ +#! /bin/sh +# +# Check that the warning flags documented in invoke.texi match up +# with what the compiler accepts. +# +# Copyright (C) 2008, 2009, 2010 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 ' ' '\012' | + 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 diff --git a/gcc-4.8.3/contrib/compare-all-tests b/gcc-4.8.3/contrib/compare-all-tests new file mode 100644 index 000000000..cf3d88b34 --- /dev/null +++ b/gcc-4.8.3/contrib/compare-all-tests @@ -0,0 +1,99 @@ +#! /bin/bash + +# Compare the assembly language output for all the gcc tests. +# Copyright (C) 2009, 2011 Free Software Foundation, Inc. +# Contributed by Paolo Bonzini. +# +# Invoke it as "bash compare-all-tests target1 target2 ... targetN". +# Assumptions are: +# +# 1) that the base and patched compilers reside respectively in +# base-$target-build and $target-build, where $target is the commandline +# argument to compare-all-tests, and should match the variables in the +# script itself so that the correct set of options is tested. Both +# compilers should be fully built (including target libraries). +# +# 2) that the testsuite has been run on the base compiler (since it's +# just compilation testing, using RUNTESTFLAGS=--target_board=basic-sim +# usually suffices). +# +# Tests that fail to compile on the base compiler are not compared. + +alpha_opts='-mlong-double-64/-mieee -mlong-double-64 -mlong-double-128/-mieee -mlong-double-128' +arm_opts='-mthumb/-march=armv5t -mthumb/-march=armv6t2 -march=armv5 -mthumb/-march=armv6t2/-mfpu=vfp/-mfloat-abi=softfp -march=armv5/-mfpu=vfp/-mfloat-abi=softfp' +cris_opts='-march=v32 -march=v1' +h8300_opts='/ -mh -mh/-mn -ms -ms/-mn -msx -msx/-mn -mint32 -mh/-mint32 -mh/-mn/-mint32 -ms/-mint32 -ms/-mn/-mint32 -msx/-mint32 -msx/-mn/-mint32' +i386_opts='-m32 -m64 -m32/-msse/-msse2/-mfpmath=sse' +m32c_opts='-mcpu=r8c -mcpu=m16c -mcpu=m32c' +m68k_opts='-m68000 -m68020 -m68020/-m68881 -m68040/-m68881 -m68060/-m68881 -mcfv4e' +mips_opts='-msoft-float/-mgp32/-mips16 -mabi=32/-mfp32/-mgp32/-mips16 -mabi=o64/-mfp64/-mgp64/-mips16 -msoft-float/-mgp32 -mfp32/-mgp32 -march=mips64r2/-mabi=32/-mfp64/-mgp32 -msoft-float/-mgp64 -msingle-float/-mfp32/-mgp64 -mfp64/-mgp64' +mn10300_opts='-mam33 -mam33-2' +pa_opts='-march=2.0 -march=1.0 -march=1.1' +ppc_opts='-m32 -m64' +s390_opts='-m31 -m31/-mzarch -m64' +score_opts='-mscore3 -mscore7' +sh64_opts='-m5-32media -m5-32media-nofpu -m5-64media -m5-64media-nofpu -m5-compact -m5-compact-nofpu' +sh_opts='-m3 -m3e -m4 -m4a -m4al -m4/-mieee -m1 -m1/-mno-cbranchdi -m2a -m2a/-mieee -m2e -m2e/-mieee' +sparc_opts='-mcpu=v8/-m32 -mcpu=v9/-m32 -m64' + +all_targets='alpha arm avr bfin cris fr30 frv h8300 ia64 iq2000 m32c m32r m68k mcore mips mmix mn10300 pa pdp11 picochip ppc score sh sh64 sparc spu v850 vax xstormy16 xtensa' # e500 + +test_one_file () +{ + local bdir pdir opts bline pline + bdir=base-$1-gcc-build + pdir=$1-gcc-build + bline=$2 + pline=${2//$bdir/$pdir} + opts=${3//\// } + echo "$pline $opts" + $bline $opts 2>/dev/null >/dev/null || return 0 + diff -L "$bdir/gcc/cc1 $opts" -L "$pdir/gcc/cc1 $opts" -u \ + <( $bline $opts 2>&1 ) <( $pline $opts 2>&1 ) || { echo -n . >&2; return 1; } +} + +test_all_opts () +{ + eval opts=\$${1}_opts + if test -z "$opts"; then + test_one_file $1 "$2" + else + for opt in $opts; do + test_one_file $1 "$2" $opt + done + fi +} + +for target in ${*-$all_targets}; do + mkdir -p $target-gcc-build/gcc/testsuite/gcc + cp -R base-$target-gcc-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1 \ + $target-gcc-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1 + + # Provide targ-include files for newlib + # for newlib_path in `echo base-$target-gcc-build/*/newlib`; do + # test -d $newlib_path && ln -sf ../../$newlib_path ${newlib_path/base-} + # done + + echo -n Testing $target >&2 + sed '/^Executing on host: /!d + /xgcc -B/!d + / -E /d + / -g/d + / -print-prog-name=/d + s/^Executing on host: // + s/ *(timeout.*// + s/ -fverbose-asm / / + s/ -frtl-abstract-sequences / / + s/ -fdump[-a-z0-9]* / /g + s/ -da / /g + s/ -\{1,2\}save-temps / / + s/ -c / -S / + / -S /! s/ -o / -S -o / + s/ -o [^ ]*/ -frandom-seed=0 -o -/' base-$target-gcc-build/gcc/testsuite/gcc/gcc.log | while read line; do + case "$line" in + *" -m"*) test_one_file $target "$line" "" ;; + *) test_all_opts $target "$line" ;; + esac + done > compare-$target.log + echo >&2 +done diff --git a/gcc-4.8.3/contrib/compare-debug b/gcc-4.8.3/contrib/compare-debug new file mode 100755 index 000000000..22870cf8e --- /dev/null +++ b/gcc-4.8.3/contrib/compare-debug @@ -0,0 +1,194 @@ +#! /bin/sh + +# Compare stripped copies of two given object files. + +# Copyright (C) 2007, 2008, 2009, 2010, 2012 Free Software Foundation +# Originally by Alexandre Oliva <aoliva@redhat.com> + +# This file is part of GCC. + +# GCC is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. + +# GCC is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +# License for more details. + +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +rm='rm -f' + +case $1 in +-p | --preserve) + rm='echo preserving' + shift + ;; +esac + +if test $# != 2; then + echo 'usage: compare-debug file1.o file2.o' >&2 + exit 1 +fi + +if test ! -f "$1"; then + echo "$1" does not exist >&2 + exit 1 +fi + +if test ! -f "$2"; then + echo "$2" does not exist >&2 + exit 1 +fi + +suf1=stripped +while test -f "$1.$suf1"; do + suf1=$suf1. +done + +suf2=stripped +while test -f "$2.$suf2"; do + suf2=$suf2. +done + +trap 'rm -f "$1.$suf1" "$2.$suf2"' 0 1 2 15 + +case `uname -s` in +Darwin) + # The strip command on darwin does not remove all debug info. + # Fortunately, we can use ld to do it instead. + ld -S -r -no_uuid "$1" -o "$1.$suf1" + ld -S -r -no_uuid "$2" -o "$2.$suf2" + ;; +*) + cp "$1" "$1.$suf1" + strip "$1.$suf1" + + cp "$2" "$2.$suf2" + strip "$2.$suf2" + ;; +esac + +remove_comment () +{ + file=$1 + opts= + for s in `objdump --section-headers "$file" | awk '{ print $2 }'`; do + case "$s" in + .comment*) + opts="$opts --remove-section $s" + ;; + esac + done + [ -n "$opts" ] && objcopy $opts $file +} + +if cmp "$1.$suf1" "$2.$suf2"; then + status=0 +else + status=1 + + # Remove any .comment sections. + if (objcopy -v) 2>&1 | grep ' --remove-section' > /dev/null \ + && (objdump --help) 2>&1 | grep ' --\[*section-\]*headers' > /dev/null; then + remove_comment "$1.$suf1" + remove_comment "$2.$suf2" + if cmp "$1.$suf1" "$2.$suf2"; then + status=0 + fi + fi + + # Assembler-generated CFI will add an .eh_frame section for -g not + # present in -g0. Try to cope with it by checking that an .eh_frame + # section is present in either object file, and then stripping it + # off before re-comparing. + + cmd= + cmp1= + cmp2= + + for t in objdump readelf eu-readelf; do + if ($t --help) 2>&1 | grep ' --\[*section-\]*headers' > /dev/null; then + cmd=$t + + $cmd --section-headers "$1.$suf1" | grep '\.eh_frame' > /dev/null + cmp1=$? + + $cmd --section-headers "$2.$suf2" | grep '\.eh_frame' > /dev/null + cmp2=$? + + break + fi + done + + # If we found .eh_frame in one but not the other, or if we could not + # find a command to tell, or if there are LTO sections, try to strip + # off the .eh_frame and LTO sections from both. + if test "x$cmp1" != "x$cmp2" || test "x$cmd" = "x" || + $cmd --section-headers "$1.$suf1" | grep '.gnu.lto_' > /dev/null || + $cmd --section-headers "$2.$suf2" | grep '.gnu.lto_' > /dev/null ; then + suf3=$suf1. + while test -f "$1.$suf3"; do + suf3=$suf3. + done + + suf4=$suf2. + while test -f "$2.$suf4"; do + suf4=$suf4. + done + + trap 'rm -f "$1.$suf1" "$2.$suf2" "$1.$suf3" "$2.$suf4"' 0 1 2 15 + + echo stripping off .eh_frame and LTO sections, then retrying >&2 + + seclist=".eh_frame .rel.eh_frame .rela.eh_frame" + if test "x$cmd" != "x"; then + seclist="$seclist "`{ $cmd --section-headers "$1.$suf1"; $cmd --section-headers "$2.$suf2"; } | sed -n 's,.* \(\.gnu\.lto_[^ ]*\).*,\1,p' | sort -u` + fi + rsopts=`for sec in $seclist; do echo " --remove-section $sec"; done` + + if (objcopy -v) 2>&1 | grep ' --remove-section' > /dev/null; then + objcopy $rsopts "$1.$suf1" "$1.$suf3" + mv "$1.$suf3" "$1.$suf1" + + objcopy $rsopts "$2.$suf2" "$2.$suf4" + mv "$2.$suf4" "$2.$suf2" + elif (strip --help) 2>&1 | grep ' --remove-section' > /dev/null; then + cp "$1.$suf1" "$1.$suf3" + strip $rsopts "$1.$suf3" + mv "$1.$suf3" "$1.$suf1" + + cp "$2.$suf2" "$2.$suf4" + strip $rsopts "$2.$suf4" + mv "$2.$suf4" "$2.$suf2" + else + echo failed to strip off .eh_frame >&2 + fi + + trap 'rm -f "$1.$suf1" "$2.$suf2"' 0 1 2 15 + + if cmp "$1.$suf1" "$2.$suf2"; then + status=0 + else + status=1 + fi + fi +fi + +$rm "$1.$suf1" "$2.$suf2" + +trap "exit $status; exit" 0 1 2 15 + +if test -f "$1".gkd || test -f "$2".gkd; then + if cmp "$1".gkd "$2".gkd; then + : + else + status=$? + fi +fi + +exit $status diff --git a/gcc-4.8.3/contrib/compareSumTests3 b/gcc-4.8.3/contrib/compareSumTests3 new file mode 100755 index 000000000..64f35d74e --- /dev/null +++ b/gcc-4.8.3/contrib/compareSumTests3 @@ -0,0 +1,250 @@ +#!/usr/bin/perl + +# Three-way DejaGNU comparison; uses dglib.pm. Run perldoc on this file for +# usage. +# +# Author: Matthew Sachs <msachs@apple.com> +# +# Copyright (c) 2006 Free Software Foundation. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +=pod + +=head1 SYNOPSIS + +compareSumTests3 -- Two-way or three-way compare between DejaGNU .sum files + +=head1 USAGE + + compareSumTests3 old1.sum [old2.sum] new.sum + compareSumTests3 -i 1:2 -x 2:3 old1.sum old2.sum new.sum + +=head1 DESCRIPTION + +Gives results in terms of 'new' (e.g. things that work in 'new' and don't in +other compilers are improvements, things that don't in 'new' and do in others +are regressions, and it tells you which of the two old compilers (or both) +the test is a regression from. + +We treat any DG result other than PASS or XFAIL as a failure, e.g. +UNRESOLVED, UNTESTED or test was not run. + +We merge some tests into 'logical tests' with multiple subphases. +For instance, some tests will have compile, execute, and link +subtests. For these tests, if one of the phases fails, we +indicate which phase the failure originates in. For instance, +in the following test results: + + gcc.c-torture/compile_execute/xxxx.c: [FAIL:C,FAIL:X,PASS] + +the "compile_execute" replaces the compile or execute portion of the test name, +and "FAIL:C" and "FAIL:X" indicates where the combined test failed. + +=head1 OPTIONS + +=head2 OVERVIEW + +=over 4 + +=item * + +C<-i X:Y>: Only display differences between the two indicated runs. + +=item * + +C<-p>: Give plain output, suitable for piping to another program. + +=item * + +C<-x X:Y>: Exclude differences between the two indicated runs. + +=back + +=head2 PLAIN OUTPUT FORMAT + +In the plain +output format, the category headers are not displayed and there are no tabs +in front of each result line. Instead, each result line has two characters +followed by a space in front of it. The first character will be either an 'I' +for improvement or 'R' for regression; the second character will be a 1, 2, or 3, +indicating which run was the odd one out. + +=head2 SELECTING CHANGE SUBSETS + +The following options cause only a selected subset of changes to be displayed. +These options ask for a "run", a number which is used to select +one of the three runs (C<old1>, C<old2>, or C<new>.) C<1> and C<2> signify C<old1> and C<old2> +respectively; 3 signifies C<new>. If multiple options are given, the changes displayed +will be those which obey all of the given restrictions. + +Typical usage of these options is to express something like "give me all changes +between 2 and 3, except for those where there was the same difference betwen 1 and 2 +(as between 2 and 3.)" This would be given as: + + -i 2:3 -x 1:2 + +=over 4 + +=item * + +C<-i X:Y>: Only differences which are present between the two runs given +are displayed. For instance, if C<-i 1:2> is given and test A passes in +runs 1 and 2 but fails in run 3, that result will not be displayed. + +=item * + +C<-x X:Y>: Differences which are identical to a difference between the two runs +given will B<not> be displayed. For instance, if C<-x 1:2> is given and +test A passes in run 1 and fails in runs 2 and 3, that result will not be +displayed (since C<-x> will cause the difference between 1 and 2 to be ignored, +and the difference in 1 and 3 parallels the difference between 1 and 2.) +This option may only be used in conjunction with C<-i>. + +=back + +=cut + +use strict; +use warnings; +use Getopt::Long; + +use FindBin qw($Bin); +use lib "$Bin"; +use dglib; + +my %options; +my $error = undef; + +if(!GetOptions( + "p" => \$options{p}, + "i=s" => \$options{i}, + "x=s" => \$options{x}, +)) { + $error = ""; +} elsif(@ARGV != 2 and @ARGV != 3) { + $error = ""; +} elsif($options{x} and !$options{i}) { + $error = "-x may only be given in conjunction with -i."; +} else { + foreach my $opt("i", "x") { + if($options{$opt} and + ($options{$opt} !~ /^([123]):([123])$/ or + $1 == $2) + ) { + $error = "Invalid -$opt argument."; + } + } +} + +if(defined($error)) { + print STDERR "$error\n" if $error; + print STDERR "Usage: compareSumTests3 [-p] [-i X:Y [-x X:Y]] old1.sum old2.sum new.sum\n"; + print STDERR "Try 'perldoc $0' for further information.\n"; + exit 1; +} + +my(@sumfiles) = @ARGV; +-f $_ || die "$_ is not a regular file!\n" foreach @sumfiles; +my(%results, @inc_changes, @exc_changes, %checksums); + +# We decrement the values given so that they correspond +# to indices into our results array. +if($options{i}) { + $options{i} =~ /(\d+):(\d+)/; + @inc_changes = ($1 - 1, $2 - 1); +} +if($options{x}) { + $options{x} =~ /(\d+):(\d+)/; + @exc_changes = ($1 - 1, $2 - 1); +} + + +my %analyzed_results = compareSumFiles(\@sumfiles); + +foreach my $cat (qw(improvements regressions miscellaneous)) { + if(@sumfiles == 3) { + my @subcounts; + if(!$options{p}) { + $subcounts[$_] = @{$analyzed_results{$cat}->[$_] || []} for(0..2); + print "\u$cat: ", ($subcounts[0]+$subcounts[1]+$subcounts[2]), "\n"; + } + + for(my $i = 0; $i < 3; $i++) { + if(!$options{p} and $cat ne "miscellaneous") { + if($i == 0) { + if($cat eq "regressions") { + print "\tSuccess in old1 only: $subcounts[$i]\n"; + } else { + print "\tFailure in old1 only: $subcounts[$i]\n"; + } + } elsif($i == 1) { + if($cat eq "regressions") { + print "\tSuccess in old2 only: $subcounts[$i]\n"; + } else { + print "\tFailure in old2 only: $subcounts[$i]\n"; + } + } else { + if($cat eq "regressions") { + print "\tFailure in new only: $subcounts[$i]\n"; + } else { + print "\tSuccess in new only: $subcounts[$i]\n"; + } + } + } + + foreach my $test (sort {$a->{name} cmp $b->{name}} @{$analyzed_results{$cat}->[$i] || []}) { + if(!$options{p}) { + if($cat eq "miscellaneous") { + print "\t"; + } else { + print "\t\t"; + } + } else { + if($cat eq "regressions") { + print "R"; + } else { + print "I"; + } + + print $i+1, " "; + } + printf "%s [%s,%s,%s]\n", $test->{name}, $test->{data}->[0], $test->{data}->[1], $test->{data}->[2]; + } + } + } else { + if(!$options{p}) { + my $subcount = @{$analyzed_results{$cat}}; + print "\u$cat: $subcount\n"; + } + + foreach my $test (sort {$a->{name} cmp $b->{name}} @{$analyzed_results{$cat}}) { + if(!$options{p}) { + print "\t"; + } else { + if($cat eq "regressions") { + print "R"; } else { + print "I"; + } + + print " "; + } + printf "%s [%s,%s]\n", $test->{name}, $test->{data}->[0], $test->{data}->[1], $test->{data}->[2]; + } + } +} diff --git a/gcc-4.8.3/contrib/compare_tests b/gcc-4.8.3/contrib/compare_tests new file mode 100755 index 000000000..b96e4a879 --- /dev/null +++ b/gcc-4.8.3/contrib/compare_tests @@ -0,0 +1,198 @@ +#!/bin/sh +# This script automatically test the given tool with the tool's test cases, +# reporting anything of interest. + +usage() +{ + if [ -n "$1" ] ; then + echo "$0: Error: $1" >&2 + echo >&2 + fi + cat >&2 <<EOUSAGE +Usage: $0 [-strict] PREVIOUS CURRENT + +Compare the PREVIOUS and CURRENT test case .sum files, reporting anything of interest. + + If PREVIOUS and CURRENT are directories, find and compare any *.sum files. + + Unless -strict is given, these discrepancies are not counted as errors: + missing/extra .sum files when comparing directories + tests that failed in PREVIOUS but pass in CURRENT + tests that were not in PREVIOUS but appear in CURRENT + tests in PREVIOUS that are missing in CURRENT + + Exit with the following values: + 0 if there is nothing of interest + 1 if there are errors when comparing single test case files + N for the number of errors found when comparing directories +EOUSAGE + exit 2 +} + +# Written by Mike Stump <mrs@cygnus.com> +# Subdir comparison added by Quentin Neill <quentin.neill@amd.com> + +export LC_ALL=C + +tool=gxx + +tmp1=/tmp/$tool-testing.$$a +tmp2=/tmp/$tool-testing.$$b +now_s=/tmp/$tool-testing.$$d +before_s=/tmp/$tool-testing.$$e +lst1=/tmp/$tool-lst1.$$ +lst2=/tmp/$tool-lst2.$$ +lst3=/tmp/$tool-lst3.$$ +lst4=/tmp/$tool-lst4.$$ +lst5=/tmp/$tool-lst5.$$ +sum1=/tmp/$tool-sum1.$$ +sum2=/tmp/$tool-sum2.$$ +tmps="$tmp1 $tmp2 $now_s $before_s $lst1 $lst2 $lst3 $lst4 $lst5 $sum1 $sum2" + +[ "$1" = "-strict" ] && strict=$1 && shift +[ "$1" = "-?" ] && usage +[ "$2" = "" ] && usage "Must specify both PREVIOUS and CURRENT" + +trap "rm -f $tmps" 0 1 2 3 5 9 13 15 +exit_status=0 + +if [ -d "$1" -a -d "$2" ] ; then + find "$1/" -name '*.sum' >$lst1 + find "$2/" -name '*.sum' >$lst2 + echo "# Comparing directories" + echo "## Dir1=$1: `cat $lst1 | wc -l` sum files" + echo "## Dir2=$2: `cat $lst2 | wc -l` sum files" + echo + # remove leading directory components to compare + sed -e "s|^$1[/]*||" $lst1 | sort >$lst3 + sed -e "s|^$2[/]*||" $lst2 | sort >$lst4 + comm -23 $lst3 $lst4 >$lst5 + if [ -s $lst5 ] ; then + echo "# Extra sum files in Dir1=$1" + sed -e "s|^|< $1/|" $lst5 + echo + [ -n "$strict" ] && exit_status=`expr $exit_status + 1` + fi + comm -13 $lst3 $lst4 >$lst5 + if [ -s $lst5 ] ; then + echo "# Extra sum files in Dir2=$2" + sed -e "s|^|> $2/|" $lst5 + echo + [ -n "$strict" ] && exit_status=`expr $exit_status + 1` + fi + comm -12 $lst3 $lst4 | sort -u >$lst5 + if [ ! -s $lst5 ] ; then + echo "# No common sum files" + exit_status=`expr $exit_status + 1` + exit $exit_status + fi + cmnsums=`cat $lst5 | wc -l` + echo "# Comparing $cmnsums common sum files" + ( for fname in `cat $lst5`; do cat $1/$fname; done ) >$sum1 + ( for fname in `cat $lst5`; do cat $2/$fname; done ) >$sum2 + echo "## ${CONFIG_SHELL-/bin/sh} $0 $strict $sum1 $sum2" + ${CONFIG_SHELL-/bin/sh} $0 $strict $sum1 $sum2 + ret=$? + if [ $ret -ne 0 ]; then + exit_status=`expr $exit_status + 1` + echo "## Differences found: $fname" + fi + if [ $exit_status -ne 0 ]; then + echo "# $exit_status differences in $cmnsums common sum files found" + else + echo "# No differences found in $cmnsums common sum files" + fi + exit $exit_status +elif [ -d "$1" -o -d "$2" ] ; then + usage "Must specify either two directories or two files" +fi + +sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$1" | awk '/^Running target / {target = $3} { if (target != "unix") { sub(/: /, "&"target": " ); }; print $0; }' >$tmp1 +sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$2" | awk '/^Running target / {target = $3} { if (target != "unix") { sub(/: /, "&"target": " ); }; print $0; }' >$tmp2 + +before=$tmp1 +now=$tmp2 + + +if sort -k 2 </dev/null >/dev/null 2>&1; then + skip1='-k 2' +else + skip1='+1' +fi + +sort -t ':' $skip1 "$now" > "$now_s" +sort -t ':' $skip1 "$before" > "$before_s" + +grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ ]//' >$tmp1 +grep '^PASS' "$before_s" | sed 's/^[^:]*:[ ]//' | comm -12 $tmp1 - >$tmp2 + +grep -s . $tmp2 >/dev/null +if [ $? = 0 ]; then + echo "Tests that now fail, but worked before:" + echo + cat $tmp2 + echo + exit_status=1 +fi + +grep '^PASS' "$now_s" | sed 's/^[^:]*:[ ]//' >$tmp1 +grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]//' | comm -12 $tmp1 - >$tmp2 + +grep -s . $tmp2 >/dev/null +if [ $? = 0 ]; then + echo "Tests that now work, but didn't before:" + echo + cat $tmp2 + [ -n "$strict" ] && echo "Strict test fails" && exit_status=1 + echo +fi + +grep '^FAIL' "$now_s" | sed 's/^[^:]*:[ ]//' >$tmp1 +grep '^[PF]A[SI][SL]' "$before_s" | sed 's/^[^:]*:[ ]//' | comm -23 $tmp1 - >$tmp2 + +grep -s . $tmp2 >/dev/null +if [ $? = 0 ]; then + echo "New tests that FAIL:" + echo + cat $tmp2 + echo + exit_status=1 +fi + +grep '^PASS' "$now_s" | sed 's/^[^:]*:[ ]//' >$tmp1 +grep '^[PF]A[SI][SL]' "$before_s" | sed 's/^[^:]*:[ ]//' | comm -23 $tmp1 - >$tmp2 + +grep -s . $tmp2 >/dev/null +if [ $? = 0 ]; then + echo "New tests that PASS:" + echo + cat $tmp2 + [ -n "$strict" ] && echo "Strict test fails" && exit_status=1 + echo +fi + +grep '^[PF]A[SI][SL]' "$now_s" | sed 's/^[^:]*:[ ]//' >$tmp1 +grep '^PASS' "$before_s" | sed 's/^[^:]*:[ ]//' | comm -13 $tmp1 - >$tmp2 + +grep -s . $tmp2 >/dev/null +if [ $? = 0 ]; then + echo "Old tests that passed, that have disappeared: (Eeek!)" + echo + cat $tmp2 + [ -n "$strict" ] && echo "Strict test fails" && exit_status=1 + echo +fi + +grep '^[PF]A[SI][SL]' "$now_s" | sed 's/^[^:]*:[ ]//' >$tmp1 +grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]//' | comm -13 $tmp1 - >$tmp2 + +grep -s . $tmp2 >/dev/null +if [ $? = 0 ]; then + echo "Old tests that failed, that have disappeared: (Eeek!)" + echo + cat $tmp2 + [ -n "$strict" ] && echo "Strict test fails" && exit_status=1 + echo +fi + +exit $exit_status diff --git a/gcc-4.8.3/contrib/compare_two_ftime_report_sets b/gcc-4.8.3/contrib/compare_two_ftime_report_sets new file mode 100755 index 000000000..384dfde1d --- /dev/null +++ b/gcc-4.8.3/contrib/compare_two_ftime_report_sets @@ -0,0 +1,605 @@ +#!/usr/bin/python + +# Script to statistically compare two sets of log files with -ftime-report +# output embedded within them. + +# Contributed by Lawrence Crowl <crowl@google.com> +# +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + + +""" Compare two sets of compile-time performance numbers. + +The intent of this script is to compare compile-time performance of two +different versions of the compiler. Each version of the compiler must be +run at least three times with the -ftime-report option. Each log file +represents a data point, or trial. The set of trials for each compiler +version constitutes a sample. The ouput of the script is a description +of the statistically significant difference between the two version of +the compiler. + +The parameters to the script are: + + Two file patterns that each match a set of log files. You will probably + need to quote the patterns before passing them to the script. + + Each pattern corresponds to a version of the compiler. + + A regular expression that finds interesting lines in the log files. + If you want to match the beginning of the line, you will need to add + the ^ operator. The filtering uses Python regular expression syntax. + + The default is "TOTAL". + + All of the interesting lines in a single log file are summed to produce + a single trial (data point). + + A desired statistical confidence within the range 60% to 99.9%. Due to + the implementation, this confidence will be rounded down to one of 60%, + 70%, 80%, 90%, 95%, 98%, 99%, 99.5%, 99.8%, and 99.9%. + + The default is 95. + + If the computed confidence is lower than desired, the script will + estimate the number of trials needed to meet the desired confidence. + This estimate is not very good, as the variance tends to change as + you increase the number of trials. + +The most common use of the script is total compile-time comparison between +logfiles stored in different directories. + +compare_two_ftime_report_sets "Log1/*perf" "Log2/*perf" + +One can also look at parsing time, but expecting a lower confidence. + +compare_two_ftime_report_sets "Log1/*perf" "Log2/*perf" "^phase parsing" 75 + +""" + + +import os +import sys +import fnmatch +import glob +import re +import math + + +####################################################################### Utility + + +def divide(dividend, divisor): + """ Return the quotient, avoiding division by zero. + """ + if divisor == 0: + return sys.float_info.max + else: + return dividend / divisor + + +################################################################# File and Line + + +# Should you repurpose this script, this code might help. +# +#def find_files(topdir, filepat): +# """ Find a set of file names, under a given directory, +# matching a Unix shell file pattern. +# Returns an iterator over the file names. +# """ +# for path, dirlist, filelist in os.walk(topdir): +# for name in fnmatch.filter(filelist, filepat): +# yield os.path.join(path, name) + + +def match_files(fileglob): + """ Find a set of file names matching a Unix shell glob pattern. + Returns an iterator over the file names. + """ + return glob.iglob(os.path.expanduser(fileglob)) + + +def lines_in_file(filename): + """ Return an iterator over lines in the named file. """ + filedesc = open(filename, "r") + for line in filedesc: + yield line + filedesc.close() + + +def lines_containing_pattern(pattern, lines): + """ Find lines by a Python regular-expression. + Returns an iterator over lines containing the expression. + """ + parser = re.compile(pattern) + for line in lines: + if parser.search(line): + yield line + + +############################################################# Number Formatting + + +def strip_redundant_digits(numrep): + if numrep.find(".") == -1: + return numrep + return numrep.rstrip("0").rstrip(".") + + +def text_number(number): + return strip_redundant_digits("%g" % number) + + +def round_significant(digits, number): + if number == 0: + return 0 + magnitude = abs(number) + significance = math.floor(math.log10(magnitude)) + least_position = int(significance - digits + 1) + return round(number, -least_position) + + +def text_significant(digits, number): + return text_number(round_significant(digits, number)) + + +def text_percent(number): + return text_significant(3, number*100) + "%" + + +################################################################ T-Distribution + + +# This section of code provides functions for using Student's t-distribution. + + +# The functions are implemented using table lookup +# to facilitate implementation of inverse functions. + + +# The table is comprised of row 0 listing the alpha values, +# column 0 listing the degree-of-freedom values, +# and the other entries listing the corresponding t-distribution values. + +t_dist_table = [ +[ 0, 0.200, 0.150, 0.100, 0.050, 0.025, 0.010, 0.005, .0025, 0.001, .0005], +[ 1, 1.376, 1.963, 3.078, 6.314, 12.71, 31.82, 63.66, 127.3, 318.3, 636.6], +[ 2, 1.061, 1.386, 1.886, 2.920, 4.303, 6.965, 9.925, 14.09, 22.33, 31.60], +[ 3, 0.978, 1.250, 1.638, 2.353, 3.182, 4.541, 5.841, 7.453, 10.21, 12.92], +[ 4, 0.941, 1.190, 1.533, 2.132, 2.776, 3.747, 4.604, 5.598, 7.173, 8.610], +[ 5, 0.920, 1.156, 1.476, 2.015, 2.571, 3.365, 4.032, 4.773, 5.894, 6.869], +[ 6, 0.906, 1.134, 1.440, 1.943, 2.447, 3.143, 3.707, 4.317, 5.208, 5.959], +[ 7, 0.896, 1.119, 1.415, 1.895, 2.365, 2.998, 3.499, 4.029, 4.785, 5.408], +[ 8, 0.889, 1.108, 1.397, 1.860, 2.306, 2.896, 3.355, 3.833, 4.501, 5.041], +[ 9, 0.883, 1.100, 1.383, 1.833, 2.262, 2.821, 3.250, 3.690, 4.297, 4.781], +[ 10, 0.879, 1.093, 1.372, 1.812, 2.228, 2.764, 3.169, 3.581, 4.144, 4.587], +[ 11, 0.876, 1.088, 1.363, 1.796, 2.201, 2.718, 3.106, 3.497, 4.025, 4.437], +[ 12, 0.873, 1.083, 1.356, 1.782, 2.179, 2.681, 3.055, 3.428, 3.930, 4.318], +[ 13, 0.870, 1.079, 1.350, 1.771, 2.160, 2.650, 3.012, 3.372, 3.852, 4.221], +[ 14, 0.868, 1.076, 1.345, 1.761, 2.145, 2.624, 2.977, 3.326, 3.787, 4.140], +[ 15, 0.866, 1.074, 1.341, 1.753, 2.131, 2.602, 2.947, 3.286, 3.733, 4.073], +[ 16, 0.865, 1.071, 1.337, 1.746, 2.120, 2.583, 2.921, 3.252, 3.686, 4.015], +[ 17, 0.863, 1.069, 1.333, 1.740, 2.110, 2.567, 2.898, 3.222, 3.646, 3.965], +[ 18, 0.862, 1.067, 1.330, 1.734, 2.101, 2.552, 2.878, 3.197, 3.610, 3.922], +[ 19, 0.861, 1.066, 1.328, 1.729, 2.093, 2.539, 2.861, 3.174, 3.579, 3.883], +[ 20, 0.860, 1.064, 1.325, 1.725, 2.086, 2.528, 2.845, 3.153, 3.552, 3.850], +[ 21, 0.859, 1.063, 1.323, 1.721, 2.080, 2.518, 2.831, 3.135, 3.527, 3.819], +[ 22, 0.858, 1.061, 1.321, 1.717, 2.074, 2.508, 2.819, 3.119, 3.505, 3.792], +[ 23, 0.858, 1.060, 1.319, 1.714, 2.069, 2.500, 2.807, 3.104, 3.485, 3.768], +[ 24, 0.857, 1.059, 1.318, 1.711, 2.064, 2.492, 2.797, 3.091, 3.467, 3.745], +[ 25, 0.856, 1.058, 1.316, 1.708, 2.060, 2.485, 2.787, 3.078, 3.450, 3.725], +[ 26, 0.856, 1.058, 1.315, 1.706, 2.056, 2.479, 2.779, 3.067, 3.435, 3.707], +[ 27, 0.855, 1.057, 1.314, 1.703, 2.052, 2.473, 2.771, 3.057, 3.421, 3.689], +[ 28, 0.855, 1.056, 1.313, 1.701, 2.048, 2.467, 2.763, 3.047, 3.408, 3.674], +[ 29, 0.854, 1.055, 1.311, 1.699, 2.045, 2.462, 2.756, 3.038, 3.396, 3.660], +[ 30, 0.854, 1.055, 1.310, 1.697, 2.042, 2.457, 2.750, 3.030, 3.385, 3.646], +[ 31, 0.853, 1.054, 1.309, 1.696, 2.040, 2.453, 2.744, 3.022, 3.375, 3.633], +[ 32, 0.853, 1.054, 1.309, 1.694, 2.037, 2.449, 2.738, 3.015, 3.365, 3.622], +[ 33, 0.853, 1.053, 1.308, 1.692, 2.035, 2.445, 2.733, 3.008, 3.356, 3.611], +[ 34, 0.852, 1.052, 1.307, 1.691, 2.032, 2.441, 2.728, 3.002, 3.348, 3.601], +[ 35, 0.852, 1.052, 1.306, 1.690, 2.030, 2.438, 2.724, 2.996, 3.340, 3.591], +[ 36, 0.852, 1.052, 1.306, 1.688, 2.028, 2.434, 2.719, 2.990, 3.333, 3.582], +[ 37, 0.851, 1.051, 1.305, 1.687, 2.026, 2.431, 2.715, 2.985, 3.326, 3.574], +[ 38, 0.851, 1.051, 1.304, 1.686, 2.024, 2.429, 2.712, 2.980, 3.319, 3.566], +[ 39, 0.851, 1.050, 1.304, 1.685, 2.023, 2.426, 2.708, 2.976, 3.313, 3.558], +[ 40, 0.851, 1.050, 1.303, 1.684, 2.021, 2.423, 2.704, 2.971, 3.307, 3.551], +[ 50, 0.849, 1.047, 1.299, 1.676, 2.009, 2.403, 2.678, 2.937, 3.261, 3.496], +[ 60, 0.848, 1.045, 1.296, 1.671, 2.000, 2.390, 2.660, 2.915, 3.232, 3.460], +[ 80, 0.846, 1.043, 1.292, 1.664, 1.990, 2.374, 2.639, 2.887, 3.195, 3.416], +[100, 0.845, 1.042, 1.290, 1.660, 1.984, 2.364, 2.626, 2.871, 3.174, 3.390], +[150, 0.844, 1.040, 1.287, 1.655, 1.976, 2.351, 2.609, 2.849, 3.145, 3.357] ] + + +# The functions use the following parameter name conventions: +# alpha - the alpha parameter +# degree - the degree-of-freedom parameter +# value - the t-distribution value for some alpha and degree +# deviations - a confidence interval radius, +# expressed as a multiple of the standard deviation of the sample +# ax - the alpha parameter index +# dx - the degree-of-freedom parameter index + +# The interface to this section of code is the last three functions, +# find_t_dist_value, find_t_dist_alpha, and find_t_dist_degree. + + +def t_dist_alpha_at_index(ax): + if ax == 0: + return .25 # effectively no confidence + else: + return t_dist_table[0][ax] + + +def t_dist_degree_at_index(dx): + return t_dist_table[dx][0] + + +def t_dist_value_at_index(ax, dx): + return t_dist_table[dx][ax] + + +def t_dist_index_of_degree(degree): + limit = len(t_dist_table) - 1 + dx = 0 + while dx < limit and t_dist_degree_at_index(dx+1) <= degree: + dx += 1 + return dx + + +def t_dist_index_of_alpha(alpha): + limit = len(t_dist_table[0]) - 1 + ax = 0 + while ax < limit and t_dist_alpha_at_index(ax+1) >= alpha: + ax += 1 + return ax + + +def t_dist_index_of_value(dx, value): + limit = len(t_dist_table[dx]) - 1 + ax = 0 + while ax < limit and t_dist_value_at_index(ax+1, dx) < value: + ax += 1 + return ax + + +def t_dist_value_within_deviations(dx, ax, deviations): + degree = t_dist_degree_at_index(dx) + count = degree + 1 + root = math.sqrt(count) + value = t_dist_value_at_index(ax, dx) + nominal = value / root + comparison = nominal <= deviations + return comparison + + +def t_dist_index_of_degree_for_deviations(ax, deviations): + limit = len(t_dist_table) - 1 + dx = 1 + while dx < limit and not t_dist_value_within_deviations(dx, ax, deviations): + dx += 1 + return dx + + +def find_t_dist_value(alpha, degree): + """ Return the t-distribution value. + The parameters are alpha and degree of freedom. + """ + dx = t_dist_index_of_degree(degree) + ax = t_dist_index_of_alpha(alpha) + return t_dist_value_at_index(ax, dx) + + +def find_t_dist_alpha(value, degree): + """ Return the alpha. + The parameters are the t-distribution value for a given degree of freedom. + """ + dx = t_dist_index_of_degree(degree) + ax = t_dist_index_of_value(dx, value) + return t_dist_alpha_at_index(ax) + + +def find_t_dist_degree(alpha, deviations): + """ Return the degree-of-freedom. + The parameters are the desired alpha and the number of standard deviations + away from the mean that the degree should handle. + """ + ax = t_dist_index_of_alpha(alpha) + dx = t_dist_index_of_degree_for_deviations(ax, deviations) + return t_dist_degree_at_index(dx) + + +############################################################## Core Statistical + + +# This section provides the core statistical classes and functions. + + +class Accumulator: + + """ An accumulator for statistical information using arithmetic mean. """ + + def __init__(self): + self.count = 0 + self.mean = 0 + self.sumsqdiff = 0 + + def insert(self, value): + self.count += 1 + diff = value - self.mean + self.mean += diff / self.count + self.sumsqdiff += (self.count - 1) * diff * diff / self.count + + +def fill_accumulator_from_values(values): + accumulator = Accumulator() + for value in values: + accumulator.insert(value) + return accumulator + + +def alpha_from_confidence(confidence): + scrubbed = min(99.99, max(confidence, 60)) + return (100.0 - scrubbed) / 200.0 + + +def confidence_from_alpha(alpha): + return 100 - 200 * alpha + + +class Sample: + + """ A description of a sample using an arithmetic mean. """ + + def __init__(self, accumulator, alpha): + if accumulator.count < 3: + sys.exit("Samples must contain three trials.") + self.count = accumulator.count + self.mean = accumulator.mean + variance = accumulator.sumsqdiff / (self.count - 1) + self.deviation = math.sqrt(variance) + self.error = self.deviation / math.sqrt(self.count) + self.alpha = alpha + self.radius = find_t_dist_value(alpha, self.count - 1) * self.error + + def alpha_for_radius(self, radius): + return find_t_dist_alpha(divide(radius, self.error), self.count) + + def degree_for_radius(self, radius): + return find_t_dist_degree(self.alpha, divide(radius, self.deviation)) + + def __str__(self): + text = "trial count is " + text_number(self.count) + text += ", mean is " + text_number(self.mean) + text += " (" + text_number(confidence_from_alpha(self.alpha)) +"%" + text += " confidence in " + text_number(self.mean - self.radius) + text += " to " + text_number(self.mean + self.radius) + ")" + text += ",\nstd.deviation is " + text_number(self.deviation) + text += ", std.error is " + text_number(self.error) + return text + + +def sample_from_values(values, alpha): + accumulator = fill_accumulator_from_values(values) + return Sample(accumulator, alpha) + + +class Comparison: + + """ A comparison of two samples using arithmetic means. """ + + def __init__(self, first, second, alpha): + if first.mean > second.mean: + self.upper = first + self.lower = second + self.larger = "first" + else: + self.upper = second + self.lower = first + self.larger = "second" + self.a_wanted = alpha + radius = self.upper.mean - self.lower.mean + rising = self.lower.alpha_for_radius(radius) + falling = self.upper.alpha_for_radius(radius) + self.a_actual = max(rising, falling) + rising = self.lower.degree_for_radius(radius) + falling = self.upper.degree_for_radius(radius) + self.count = max(rising, falling) + 1 + + def __str__(self): + message = "The " + self.larger + " sample appears to be " + change = divide(self.upper.mean, self.lower.mean) - 1 + message += text_percent(change) + " larger,\n" + confidence = confidence_from_alpha(self.a_actual) + if confidence >= 60: + message += "with " + text_number(confidence) + "% confidence" + message += " of being larger." + else: + message += "but with no confidence of actually being larger." + if self.a_actual > self.a_wanted: + confidence = confidence_from_alpha(self.a_wanted) + message += "\nTo reach " + text_number(confidence) + "% confidence," + if self.count < 100: + message += " you need roughly " + text_number(self.count) + " trials,\n" + message += "assuming the standard deviation is stable, which is iffy." + else: + message += "\nyou need to reduce the larger deviation" + message += " or increase the number of trials." + return message + + +############################################################ Single Value Files + + +# This section provides functions to compare two raw data files, +# each containing a whole sample consisting of single number per line. + + +# Should you repurpose this script, this code might help. +# +#def values_from_data_file(filename): +# for line in lines_in_file(filename): +# yield float(line) + + +# Should you repurpose this script, this code might help. +# +#def sample_from_data_file(filename, alpha): +# confidence = confidence_from_alpha(alpha) +# text = "\nArithmetic sample for data file\n\"" + filename + "\"" +# text += " with desired confidence " + text_number(confidence) + " is " +# print text +# values = values_from_data_file(filename) +# sample = sample_from_values(values, alpha) +# print sample +# return sample + + +# Should you repurpose this script, this code might help. +# +#def compare_two_data_files(filename1, filename2, confidence): +# alpha = alpha_from_confidence(confidence) +# sample1 = sample_from_data_file(filename1, alpha) +# sample2 = sample_from_data_file(filename2, alpha) +# print +# print Comparison(sample1, sample2, alpha) + + +# Should you repurpose this script, this code might help. +# +#def command_two_data_files(): +# argc = len(sys.argv) +# if argc < 2 or 4 < argc: +# message = "usage: " + sys.argv[0] +# message += " file-name file-name [confidence]" +# print message +# else: +# filename1 = sys.argv[1] +# filename2 = sys.argv[2] +# if len(sys.argv) >= 4: +# confidence = int(sys.argv[3]) +# else: +# confidence = 95 +# compare_two_data_files(filename1, filename2, confidence) + + +############################################### -ftime-report TimeVar Log Files + + +# This section provides functions to compare two sets of -ftime-report log +# files. Each set is a sample, where each data point is derived from the +# sum of values in a single log file. + + +label = r"^ *([^:]*[^: ]) *:" +number = r" *([0-9.]*) *" +percent = r"\( *[0-9]*\%\)" +numpct = number + percent +total_format = label + number + number + number + number + " kB\n" +total_parser = re.compile(total_format) +tmvar_format = label + numpct + " usr" + numpct + " sys" +tmvar_format += numpct + " wall" + number + " kB " + percent + " ggc\n" +tmvar_parser = re.compile(tmvar_format) +replace = r"\2\t\3\t\4\t\5\t\1" + + +def split_time_report(lines, pattern): + if pattern == "TOTAL": + parser = total_parser + else: + parser = tmvar_parser + for line in lines: + modified = parser.sub(replace, line) + if modified != line: + yield re.split("\t", modified) + + +def extract_cpu_time(tvtuples): + for tuple in tvtuples: + yield float(tuple[0]) + float(tuple[1]) + + +def sum_values(values): + sum = 0 + for value in values: + sum += value + return sum + + +def extract_time_for_timevar_log(filename, pattern): + lines = lines_in_file(filename) + tmvars = lines_containing_pattern(pattern, lines) + tuples = split_time_report(tmvars, pattern) + times = extract_cpu_time(tuples) + return sum_values(times) + + +def extract_times_for_timevar_logs(filelist, pattern): + for filename in filelist: + yield extract_time_for_timevar_log(filename, pattern) + + +def sample_from_timevar_logs(fileglob, pattern, alpha): + confidence = confidence_from_alpha(alpha) + text = "\nArithmetic sample for timevar log files\n\"" + fileglob + "\"" + text += "\nand selecting lines containing \"" + pattern + "\"" + text += " with desired confidence " + text_number(confidence) + " is " + print text + filelist = match_files(fileglob) + values = extract_times_for_timevar_logs(filelist, pattern) + sample = sample_from_values(values, alpha) + print sample + return sample + + +def compare_two_timevar_logs(fileglob1, fileglob2, pattern, confidence): + alpha = alpha_from_confidence(confidence) + sample1 = sample_from_timevar_logs(fileglob1, pattern, alpha) + sample2 = sample_from_timevar_logs(fileglob2, pattern, alpha) + print + print Comparison(sample1, sample2, alpha) + + +def command_two_timevar_logs(): + argc = len(sys.argv) + if argc < 3 or 5 < argc: + message = "usage: " + sys.argv[0] + message += " file-pattern file-pattern [line-pattern [confidence]]" + print message + else: + filepat1 = sys.argv[1] + filepat2 = sys.argv[2] + if len(sys.argv) >= 5: + confidence = int(sys.argv[4]) + else: + confidence = 95 + if len(sys.argv) >= 4: + linepat = sys.argv[3] + else: + linepat = "TOTAL" + compare_two_timevar_logs(filepat1, filepat2, linepat, confidence) + + +########################################################################## Main + + +# This section is the main code, implementing the command. + + +command_two_timevar_logs() diff --git a/gcc-4.8.3/contrib/config-list.mk b/gcc-4.8.3/contrib/config-list.mk new file mode 100644 index 000000000..66f479acf --- /dev/null +++ b/gcc-4.8.3/contrib/config-list.mk @@ -0,0 +1,94 @@ +# Run tests covering all config.gcc cases. +host_options='--with-mpc=/opt/cfarm/mpc' # gcc10 +TEST=all-gcc +# Make sure you have a recent enough gcc (with ada support) in your path so +# that --enable-werror-always will work. +# To use, create a sibling directory to the gcc sources and cd into this. +# Use -j / -l make arguments and nice to assure a smooth resource-efficient +# load on the build machine, e.g. for 24 cores: +# svn co svn://gcc.gnu.org/svn/gcc/branches/foo-branch gcc +# mkdir multi-mk; cd multi-mk +# nohup nice make -j25 -l36 -f ../gcc/contrib/config-list.mk > make.out 2>&1 & +# +# v850e1-elf is rejected by config.sub +LIST = alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \ + alpha64-dec-vms alpha-dec-vms am33_2.0-linux \ + arm-wrs-vxworks arm-netbsdelf \ + arm-linux-androideabi arm-uclinux_eabi arm-eabi \ + arm-symbianelf avr-rtems avr-elf \ + bfin-elf bfin-uclinux bfin-linux-uclibc bfin-rtems bfin-openbsd \ + c6x-elf c6x-uclinux cr16-elf cris-elf cris-linux crisv32-elf crisv32-linux \ + epiphany-elf epiphany-elfOPT-with-stack-offset=16 fido-elf \ + fr30-elf frv-elf frv-linux h8300-elf h8300-rtems hppa-linux-gnu \ + hppa-linux-gnuOPT-enable-sjlj-exceptions=yes hppa64-linux-gnu \ + hppa2.0-hpux10.1 hppa64-hpux11.3 \ + hppa64-hpux11.0OPT-enable-sjlj-exceptions=yes hppa2.0-hpux11.9 \ + i686-pc-linux-gnu i686-apple-darwin i686-apple-darwin9 i686-apple-darwin10 \ + i486-freebsd4 i686-freebsd6 i686-kfreebsd-gnu \ + i686-netbsdelf9 i686-knetbsd-gnu i686-openbsd i686-openbsd3.0 \ + i686-elf i686-kopensolaris-gnu i686-symbolics-gnu i686-pc-msdosdjgpp \ + i686-lynxos i686-nto-qnx \ + i686-rtems i686-solaris2.10 i686-wrs-vxworks \ + i686-wrs-vxworksae \ + i686-cygwinOPT-enable-threads=yes i686-mingw32crt ia64-elf \ + ia64-freebsd6 ia64-linux ia64-hpux ia64-hp-vms iq2000-elf lm32-elf \ + lm32-rtems lm32-uclinux m32c-rtems m32c-elf m32r-elf m32rle-elf m32r-rtems \ + m32r-linux m32rle-linux m68k-elf m68k-netbsdelf \ + m68k-openbsd m68k-uclinux m68k-linux m68k-rtems \ + mcore-elf mep-elf microblaze-linux microblaze-elf \ + mips-netbsd \ + mips64el-st-linux-gnu mips64octeon-linux mipsisa64r2-linux \ + mipsisa32r2-linux-gnu mipsisa64r2-sde-elf mipsisa32-elfoabi \ + mipsisa64-elfoabi mipsisa64r2el-elf mipsisa64sr71k-elf mipsisa64sb1-elf \ + mipsel-elf mips64-elf mips64vr-elf mips64orion-elf mips-rtems \ + mips-wrs-vxworks mipstx39-elf mmix-knuth-mmixware mn10300-elf moxie-elf \ + moxie-uclinux moxie-rtems pdp11-aout picochip-elfOPT-enable-obsolete \ + powerpc-darwin8 \ + powerpc-darwin7 powerpc64-darwin powerpc-freebsd6 powerpc-netbsd \ + powerpc-eabispe powerpc-eabisimaltivec powerpc-eabisim ppc-elf \ + powerpc-eabialtivec powerpc-xilinx-eabi powerpc-eabi \ + powerpc-rtems4.11OPT-enable-threads=yes powerpc-linux_spe \ + powerpc-linux_paired powerpc64-linux_altivec \ + powerpc-wrs-vxworks powerpc-wrs-vxworksae powerpc-lynxos powerpcle-elf \ + powerpcle-eabisim powerpcle-eabi rs6000-ibm-aix4.3 rs6000-ibm-aix5.1.0 \ + rs6000-ibm-aix5.2.0 rs6000-ibm-aix5.3.0 rs6000-ibm-aix6.0 \ + rl78-elf rx-elf s390-linux-gnu s390x-linux-gnu s390x-ibm-tpf sh-elf \ + shle-linux sh-netbsdelf sh-superh-elf sh5el-netbsd sh64-netbsd sh64-linux \ + sh64-elfOPT-with-newlib sh-rtems sh-wrs-vxworks sparc-elf \ + sparc-leon-elf sparc-rtems sparc-linux-gnu \ + sparc-leon3-linux-gnuOPT-enable-target=all sparc-netbsdelf \ + sparc64-sun-solaris2.10OPT-with-gnu-ldOPT-with-gnu-asOPT-enable-threads=posix \ + sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux sparc64-freebsd6 \ + sparc64-netbsd sparc64-openbsd spu-elf tilegx-linux-gnu tilepro-linux-gnu \ + v850e-elf v850-elf vax-linux-gnu \ + vax-netbsdelf vax-openbsd x86_64-apple-darwin \ + x86_64-pc-linux-gnuOPT-with-fpmath=avx \ + x86_64-elfOPT-with-fpmath=sse x86_64-freebsd6 x86_64-netbsd \ + x86_64-knetbsd-gnu x86_64-w64-mingw32 \ + x86_64-mingw32OPT-enable-sjlj-exceptions=yes xstormy16-elf xtensa-elf \ + xtensa-linux sparc-sun-solaris2.9 i686-solaris2.9 \ + i686-interix3OPT-enable-obsolete score-elfOPT-enable-obsolete + +LOGFILES = $(patsubst %,log/%-make.out,$(LIST)) +all: $(LOGFILES) +config: $(LIST) + +.PHONY: make-log-dir all config + +empty= + +#Check for the presence of the MAINTAINERS file to make sure we are in a +#suitable current working directory. +make-log-dir: ../gcc/MAINTAINERS + mkdir log + +$(LIST): make-log-dir + -mkdir $@ + (cd $@ && \ + ../../gcc/configure \ + --target=$(subst SCRIPTS,`pwd`/../scripts/,$(subst OPT,$(empty) -,$@)) \ + --enable-werror-always ${host_options} --enable-languages=all,ada,go) \ + > log/$@-config.out 2>&1 + +$(LOGFILES) : log/%-make.out : % + -$(MAKE) -C $< $(TEST) > $@ 2>&1 && rm -rf $< diff --git a/gcc-4.8.3/contrib/dg-cmp-results.sh b/gcc-4.8.3/contrib/dg-cmp-results.sh new file mode 100755 index 000000000..d29176954 --- /dev/null +++ b/gcc-4.8.3/contrib/dg-cmp-results.sh @@ -0,0 +1,211 @@ +#!/bin/bash +# Copyright (C) 2006, 2008 Free Software Foundation +# +# Analyze changes in GCC DejaGNU test logs for binutils, gcc, gdb, etc. +# Original version written in 2005 by James Lemke <jwlemke@wasabisystems.com>. +# +# See usage() below. + +usage () { + cat <<EOF >&2 +Usage: + dg-cmp-results.sh [-v] [-v] [-v] <variant-name> <old-file> <new-file> + <variant-name> names the desired variant, "/" must be written as "\/". + Use the empty string ("") for the first variant in each file. + Output is to stdout. + Non-verbose output is degradation info like PASS->FAIL. + -v adds improvement info like FAIL->PASS. + -v -v adds info like tests that are no longer run. + -v -v -v adds info for tests that have not changed status. + -v -v -v -v is used for debugging. +EOF +} + +verbose=0 +while test "$1" = "-v"; do + verbose=`expr $verbose + 1` + shift +done + +if test $# -ne 3 ; then + usage + exit 1 +fi + +if test ! -f "$2"; then + echo "unable to open $2" >&2 + exit 1 +fi + +if test ! -f "$3"; then + echo "unable to open $3" >&2 + exit 1 +fi + +# Command differences for various platforms. +case `uname -s` in +Darwin|NetBSD) + E=-E # sed + ;; +*) + E=-r # sed + ;; +esac + +# sections are identified by separator lines beginning with '\t\t==='. +# section 0 identifies run date, target, and host. +# section 1 and subsequent contain test data for a target variant. +# -skip to /^Running target/ and use that line to identify the variant. +# -subsequent lines contain the result data. They begin with: +# '(PASS|FAIL|XFAIL|XPASS|UNTESTED|UNSUPPORTED|UNRESOLVED):' +VARIANT="$1" +OFILE="$2" +OBASE=`basename "$2"` +NFILE="$3" +NBASE=`basename "$3"` + +echo "dg-cmp-results.sh: Verbosity is ${verbose}, Variant is \"${VARIANT}\"" +echo + +header="^Running target $VARIANT" + +temp=`grep "$header" $OFILE` +if test -z "$temp"; then + echo "Error: variant \"$VARIANT\" not found in $OFILE." + exit 1 +fi +temp=`grep "$header" $NFILE` +if test -z "$temp"; then + echo "Error: variant \"$VARIANT\" not found in $NFILE." + exit 1 +fi +unset temp + +# Copy out the old file's section 0. +echo "Older log file: $OFILE" +sed $E -e '/^[[:space:]]+===/,$d' $OFILE + +# Copy out the new file's section 0. +echo "Newer log file: $NFILE" +sed $E -e '/^[[:space:]]+===/,$d' $NFILE + +# Create a temporary file from the old file's interesting section. +sed $E -e "1,/$header/d" \ + -e '/^[[:space:]]+===/,$d' \ + -e '/^[A-Z]+:/!d' \ + -e '/^(WARNING|ERROR):/d' \ + -e 's/\r$//' \ + -e 's/^/O:/' \ + $OFILE | + sort -s -t : -k 3b - \ + >/tmp/o$$-$OBASE + +# Create a temporary file from the new file's interesting section. +sed $E -e "1,/$header/d" \ + -e '/^[[:space:]]+===/,$d' \ + -e '/^[A-Z]+:/!d' \ + -e '/^(WARNING|ERROR):/d' \ + -e 's/\r$//' \ + -e 's/^/N:/' \ + $NFILE | + sort -s -t : -k 3b - \ + >/tmp/n$$-$NBASE + +# Merge the two files, then compare adjacent lines. +# Comparison is complicated by tests that may be run multiple times. +# If that case, we assume that the order is the same in both files. +cat <<EOF >compare-$$.awk +BEGIN { + FS = ":" + queue1 = 1; queueN = 0; status[queue1] = ""; name[queue1] = "" + verbose = verbose + 0 # Make sure it's defined. +} + +# FIFO circular queue +function push(st, nm) { + queueN += 1; status[queueN] = st; name[queueN] = nm +} +function peek() { + result = 0 + if (queueN >= queue1) result = queue1 + return result +} +function drop() { + queue1 += 1 + if (queue1 > queueN) { queue1 = 1; queueN = 0; } +} + +function compare(st, nm) { + old = peek() + if (old == 0) { + # This new test wasn't run last time. + if (verbose >= 2) printf("NA->%s:%s\n", st, nm) + } + else { + # Compare this new test to the first queued old one. + if (verbose >= 4) { + printf("Comparing two lines:\n O:%s:%s\n N:%s:%s\n", + status[old], name[old], st, nm) + } + if (name[old] != nm) { + # The old test wasn't run this time and + # the new test wasn't run last time. + if (verbose >= 2) { + printf("%s->NA:%s\n", status[old], name[old]) + if (nm != "") printf("NA->%s:%s\n", st, nm) + } + drop() + } + else { + notable = 0 + if (status[old] == st) { + # Status of this test has not changed. + if (verbose >= 3) printf("%s:%s\n", st, nm) + } + else if(status[old] == "PASS" && st == "XFAIL") { + if (verbose >= 1) notable = 1 + } + else if(status[old] == "PASS" || st == "FAIL") { + # Test did pass but doesn't now + # or didn't fail but does now. + notable = 1 + } + else if(st == "PASS") { + # Test didn't pass but does now. + if (verbose >= 1) notable = 1 + } + else if(verbose >= 2) { + # Miscellaneous status change. + notable = 1 + } + if (notable > 0) printf("%s->%s:%s\n", status[old], st, nm) + drop() + } + } +} + +/^O:/ { + while (old = peek()) { + if (name[old] == \$3) break; + # The queued test is no longer run. + compare("", ""); + } + # Save this test for later comparison. + push(\$2, \$3) +} + +/^N:/ { + compare(\$2, \$3) +} + +END { + while (old = peek()) compare("", "") +} +EOF +sort -m -s -t : -k 3b /tmp/o$$-$OBASE /tmp/n$$-$NBASE | + awk -v verbose=$verbose -f compare-$$.awk /dev/stdin + +# Delete the temporary files. +rm -f compare-$$.awk /tmp/o$$-$OBASE /tmp/n$$-$NBASE + +exit 0 diff --git a/gcc-4.8.3/contrib/dg-extract-results.sh b/gcc-4.8.3/contrib/dg-extract-results.sh new file mode 100755 index 000000000..702928138 --- /dev/null +++ b/gcc-4.8.3/contrib/dg-extract-results.sh @@ -0,0 +1,431 @@ +#! /bin/sh + +# For a specified tool and optional list of test variants, extract +# test results from one or more test summary (.sum) files and combine +# the results into a new test summary file, sent to the standard output. +# The resulting file can be used with test result comparison scripts for +# results from tests that were run in parallel. See usage() below. + +# Copyright (C) 2008, 2009, 2010, 2012 Free Software Foundation +# Contributed by Janis Johnson <janis187@us.ibm.com> +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +PROGNAME=dg-extract-results.sh + +usage() { + cat <<EOF >&2 +Usage: $PROGNAME [-t tool] [-l variant-list] [-L] sum-file ... + + tool The tool (e.g. g++, libffi) for which to create a + new test summary file. If not specified then all + specified sum files must be for the same tool. + variant-list One or more test variant names. If the list is + not specified then one is constructed from all + variants in the files for <tool>. + sum-file A test summary file with the format of those + created by runtest from DejaGnu. + If -L is used, merge *.log files instead of *.sum. In this + mode the exact order of lines may not be preserved, just different + Running *.exp chunks should be in correct order. +EOF +} + +# Write a message to the standard error. + +msg() { + echo "$@" >&2 +} + +# Parse the command-line options. + +VARIANTS="" +TOOL="" +MODE="sum" + +while getopts "l:t:L" ARG; do + case $ARG in + l) VARIANTS="${VARIANTS} ${OPTARG}";; + t) test -z "$TOOL" || (msg "${PROGNAME}: only one tool can be specified"; exit 1); + TOOL="${OPTARG}";; + L) MODE="log";; + \?) usage; exit 0;; + esac +done +shift `expr ${OPTIND} - 1` + +if test $# -lt 1 ; then + usage + exit 1 +fi + +TMPDIR=${TMPDIR-/tmp} +SUM_FILES="$@" +FIRST_SUM=$1 +TMP= +trap 'EXIT_STATUS=$?; rm -rf $TMP && exit $EXIT_STATUS' 0 +# Create a (secure) tmp directory for tmp files. +{ + TMP=`(umask 077 && mktemp -d -q "${TMPDIR}/dg-combine-results-$$-XXXXXX") 2>/dev/null` && + test -n "$TMP" && test -d "$TMP" +} || +{ + TMP=${TMPDIR}/dg-combine-results-$$-$RANDOM + (umask 077 && mkdir $TMP) +} || +{ + msg "${PROGNAME}: cannot create a temporary directory" + { (exit 1); exit 1; } +} + +# 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 + +# Verify that the specified summary files exist. + +ERROR=0 +for FILE in $SUM_FILES +do + if ! test -f $FILE ; then + msg "${PROGNAME}: file $FILE does not exist." + ERROR=1 + fi +done +test $ERROR -eq 0 || exit 1 + +if [ -z "$TOOL" ]; then + # If no tool was specified, all specified summary files must be for + # the same tool. + + CNT=`grep '=== .* tests ===' $SUM_FILES | $AWK '{ print $3 }' | sort -u | wc -l` + if [ $CNT -eq 1 ]; then + TOOL=`grep '=== .* tests ===' $FIRST_SUM | $AWK '{ print $2 }'` + else + msg "${PROGNAME}: sum files are for multiple tools, specify a tool" + msg "" + usage + exit 1 + fi +else + # Ignore the specified summary files that are not for this tool. This + # should keep the relevant files in the same order. + + SUM_FILES=`grep -l "=== $TOOL" $SUM_FILES` + if test -z "$SUM_FILES" ; then + msg "${PROGNAME}: none of the specified files are results for $TOOL" + exit 1 + fi +fi + +if [ "$TOOL" = acats ]; then + # Acats *.sum or *.log files aren't dejagnu generated, and they have + # somewhat different format. + ACATS_AWK=${TMP}/acats.awk + cat <<EOF > $ACATS_AWK +BEGIN { + print_prologue=1; curfile=""; insummary=0 + passcnt=0; failcnt=0; unsupcnt=0; failures="" +} +/^[ \t]*=== acats configuration ===/ { + insummary=0 + if (print_prologue) print + next +} +/^[ \t]*=== acats tests ===/ { + if (print_prologue) print + print_prologue=0 + next +} +/^Running chapter / { + if (curfile) close (curfile) + curfile="${TMP}/chapter-"\$3 + print >> curfile + next +} +/^[ \t]*=== acats Summary ===/ { + if (curfile) close (curfile) + curfile="" + insummary=1 + next +} +/^# of expected passes/ { if (insummary == 1) passcnt += \$5; next; } +/^# of unexpected failures/ { if (insummary == 1) failcnt += \$5; next; } +/^# of unsupported tests/ { if (insummary == 1) unsupcnt += \$5; next; } +/^\*\*\* FAILURES: / { + if (insummary == 1) { + if (failures) sub(/^\*\*\* FAILURES:/,"") + failures=failures""\$0 + } +} +{ + if (print_prologue) { print; next } + if (curfile) print >> curfile +} +END { + system ("cat ${TMP}/chapter-*") + print " === acats Summary ===" + print "# of expected passes " passcnt + print "# of unexpected failures " failcnt + if (unsupcnt) print "# of unsupported tests " unsupcnt + if (failures) print failures +} +EOF + + rm -f ${TMP}/chapter-* + $AWK -f $ACATS_AWK $SUM_FILES + exit 0 +fi + +# If no variants were specified, find all variants in the remaining +# summary files. Otherwise, ignore specified variants that aren't in +# any of those summary files. + +if test -z "$VARIANTS" ; then + VAR_AWK=${TMP}/variants.awk + cat <<EOF > $VAR_AWK +/^Schedule of variations:/ { in_vars=1; next } +/^$/ { in_vars=0 } +/^Running target/ { exit } +{ if (in_vars==1) print \$1; else next } +EOF + + touch ${TMP}/varlist + for FILE in $SUM_FILES; do + $AWK -f $VAR_AWK $FILE >> ${TMP}/varlist + done + VARIANTS="`sort -u ${TMP}/varlist`" +else + VARS="$VARIANTS" + VARIANTS="" + for VAR in $VARS + do + grep "Running target $VAR" $SUM_FILES > /dev/null && VARIANTS="$VARIANTS $VAR" + done +fi + +# Find out if we have more than one variant, or any at all. + +VARIANT_COUNT=0 +for VAR in $VARIANTS +do + VARIANT_COUNT=`expr $VARIANT_COUNT + 1` +done + +if test $VARIANT_COUNT -eq 0 ; then + msg "${PROGNAME}: no file for $TOOL has results for the specified variants" + exit 1 +fi + +cat $SUM_FILES \ + | $AWK '/^Running/ { if ($2 != "target" && $3 == "...") print "EXPFILE: "$2 } ' \ + | sort -u > ${TMP}/expfiles + +# Write the begining of the combined summary file. + +head -n 2 $FIRST_SUM +echo +echo " === $TOOL tests ===" +echo +echo "Schedule of variations:" +for VAR in $VARIANTS +do + echo " $VAR" +done +echo + +# For each test variant for the tool, copy test reports from each of the +# summary files. Set up two awk scripts from within the loop to +# initialize VAR and TOOL with the script, rather than assuming that the +# available version of awk can pass variables from the command line. + +for VAR in $VARIANTS +do + GUTS_AWK=${TMP}/guts.awk + cat << EOF > $GUTS_AWK +BEGIN { + variant="$VAR" + firstvar=1 + expfileno=1 + cnt=0 + print_using=0 + need_close=0 +} +/^EXPFILE: / { + expfiles[expfileno] = \$2 + expfilesr[\$2] = expfileno + expfileno = expfileno + 1 +} +/^Running target / { + curvar = \$3 + if (variant == curvar && firstvar == 1) { print; print_using=1; firstvar = 0 } + next +} +/^Using / { + if (variant == curvar && print_using) { print; next } +} +/^Running .*\\.exp \\.\\.\\./ { + print_using=0 + if (variant == curvar) { + if (need_close) close(curfile) + curfile="${TMP}/list"expfilesr[\$2] + expfileseen[\$2]=expfileseen[\$2] + 1 + need_close=0 + testname="00" + next + } +} +/^\t\t=== .* ===$/ { curvar = ""; next } +/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL):/ { + testname=\$2 + # Ugly hack for gfortran.dg/dg.exp + if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//) + testname="h"testname +} +/^$/ { if ("$MODE" == "sum") next } +{ if (variant == curvar && curfile) { + if ("$MODE" == "sum") { + printf "%s %08d|", testname, cnt >> curfile + cnt = cnt + 1 + } + filewritten[curfile]=1 + need_close=1 + print >> curfile + } else + next +} +END { + n=1 + while (n < expfileno) { + if (expfileseen[expfiles[n]]) { + print "Running "expfiles[n]" ..." + if (filewritten["${TMP}/list"n]) { + if (expfileseen[expfiles[n]] == 1) + cmd="cat" + else + cmd="LC_ALL=C sort" + if ("$MODE" == "sum") + system (cmd" ${TMP}/list"n" | sed -n 's/^[^ ]* [^ |]*|//p'") + else + system ("cat ${TMP}/list"n) + } + } + n = n + 1 + } +} +EOF + + SUMS_AWK=${TMP}/sums.awk + rm -f $SUMS_AWK + cat << EOF > $SUMS_AWK +BEGIN { + variant="$VAR" + tool="$TOOL" + passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kpasscnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; + curvar=""; insummary=0 +} +/^Running target / { curvar = \$3; next } +/^# of / { if (variant == curvar) insummary = 1 } +/^# of expected passes/ { if (insummary == 1) passcnt += \$5; next; } +/^# of unexpected successes/ { if (insummary == 1) xpasscnt += \$5; next; } +/^# of unexpected failures/ { if (insummary == 1) failcnt += \$5; next; } +/^# of expected failures/ { if (insummary == 1) xfailcnt += \$5; next; } +/^# of unknown successes/ { if (insummary == 1) kpasscnt += \$5; next; } +/^# of known failures/ { if (insummary == 1) kfailcnt += \$5; next; } +/^# of untested testcases/ { if (insummary == 1) untstcnt += \$5; next; } +/^# of unresolved testcases/ { if (insummary == 1) unrescnt += \$5; next; } +/^# of unsupported tests/ { if (insummary == 1) unsupcnt += \$5; next; } +/^$/ { if (insummary == 1) + { insummary = 0; curvar = "" } + next + } +{ next } +END { + printf ("\t\t=== %s Summary for %s ===\n\n", tool, variant) + if (passcnt != 0) printf ("# of expected passes\t\t%d\n", passcnt) + if (failcnt != 0) printf ("# of unexpected failures\t%d\n", failcnt) + if (xpasscnt != 0) printf ("# of unexpected successes\t%d\n", xpasscnt) + if (xfailcnt != 0) printf ("# of expected failures\t\t%d\n", xfailcnt) + if (kpasscnt != 0) printf ("# of unknown successes\t\t%d\n", kpasscnt) + if (kfailcnt != 0) printf ("# of known failures\t\t%d\n", kfailcnt) + if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt) + if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt) + if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt) +} +EOF + + PVAR=`echo $VAR | sed 's,/,.,g'` + TMPFILE=${TMP}/var-$PVAR + rm -f $TMPFILE + rm -f ${TMP}/list* + cat ${TMP}/expfiles $SUM_FILES | $AWK -f $GUTS_AWK + cat $SUM_FILES | $AWK -f $SUMS_AWK > $TMPFILE + # If there are multiple variants, output the counts for this one; + # otherwise there will just be the final counts at the end. + test $VARIANT_COUNT -eq 1 || cat $TMPFILE +done + +# Set up an awk script to get the combined summary counts for the tool. + +TOTAL_AWK=${TMP}/total.awk +cat << EOF > $TOTAL_AWK +BEGIN { + tool="$TOOL" + passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0 +} +/^# of expected passes/ { passcnt += \$5 } +/^# of unexpected failures/ { failcnt += \$5 } +/^# of unexpected successes/ { xpasscnt += \$5 } +/^# of expected failures/ { xfailcnt += \$5 } +/^# of unknown successes/ { kpasscnt += \$5 } +/^# of known failures/ { kfailcnt += \$5 } +/^# of untested testcases/ { untstcnt += \$5 } +/^# of unresolved testcases/ { unrescnt += \$5 } +/^# of unsupported tests/ { unsupcnt += \$5 } +END { + printf ("\n\t\t=== %s Summary ===\n\n", tool) + if (passcnt != 0) printf ("# of expected passes\t\t%d\n", passcnt) + if (failcnt != 0) printf ("# of unexpected failures\t%d\n", failcnt) + if (xpasscnt != 0) printf ("# of unexpected successes\t%d\n", xpasscnt) + if (xfailcnt != 0) printf ("# of expected failures\t\t%d\n", xfailcnt) + if (kpasscnt != 0) printf ("# of unknown successes\t\t%d\n", kpasscnt) + if (kfailcnt != 0) printf ("# of known failures\t\t%d\n", kfailcnt) + if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt) + if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt) + if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt) +} +EOF + +# Find the total summaries for the tool and add to the end of the output. +cat ${TMP}/var-* | $AWK -f $TOTAL_AWK + +# This is ugly, but if there's version output from the compiler under test +# at the end of the file, we want it. The other thing that might be there +# is the final summary counts. +tail -2 $FIRST_SUM | grep '^#' > /dev/null || tail -2 $FIRST_SUM + +exit 0 diff --git a/gcc-4.8.3/contrib/dglib.pm b/gcc-4.8.3/contrib/dglib.pm new file mode 100644 index 000000000..c86d4f014 --- /dev/null +++ b/gcc-4.8.3/contrib/dglib.pm @@ -0,0 +1,424 @@ +# Library of functions for dealing with DejaGNU, or which are otherwise +# generally useful for the DejaGNU tool stack. +# +# Author: Matthew Sachs <msachs@apple.com> +# +# Functions: +# parseLogFile: See "sub parseLogFile" below for details. This function +# returns a detailed parse of a DejaGNU log or sum file. +# ispass: Takes a DejaGNU result (e.g. "PASS", "XPASS") and returns +# true if and only if it is a passing result (PASS, XFAIL, or +# KFAIL.) +# +# Copyright (c) 2006 Free Software Foundation. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +package dglib; + +use strict; +use warnings; +use Exporter; + +our @ISA = qw(Exporter); +our @EXPORT = qw(ispass parseLogFile); + +use File::Basename; +use POSIX qw(mktime); + + +# Create a group hierarchy, returning the leaf node +sub mkGroupPath { + my($root, $groups, @newgroups) = @_; + + my $parent = $root; + my $fullname = ""; + foreach my $group(@newgroups) { + $fullname .= "/" if $fullname; + $fullname .= $group; + if(exists($groups->{$fullname})) { + $parent = $groups->{$fullname}; + } else { + my $newgroup = {name => $group, parent => $parent}; + $groups->{$fullname} = $newgroup; + $parent->{testgroup} ||= []; + push @{$parent->{testgroup}}, $newgroup; + $parent = $newgroup; + } + } + + return $parent; +} + +# Extract information from DejaGNU log or sum files. +# Options, if provided, should be a hashref with zero or more of the following keys: +# gccdir: +# Passing in the full path to the root of the gcc/testsuite directory +# will help in the parsing, but if it isn't provided, it will be guessed. +# diagnostics: +# If set to 0, diagnostics will not be returned. This can save a lot +# of memory if you are not using this information. +# fullname: +# If set to 0, the fullname key will not be included in tests. +# Returns a hash with the following keys: +# incomplete: 1 if the summary file appears truncated, otherwise 0 +# diagnostics: List of (type, value) for any errors detected. Type can be ERROR, WARNING, or NOTE. +# test: Array of root-level tests, with keys: +# name: Name of the test, relative to the enclosing test group. +# fullname: Fully-qualified name of the test. +# result: DejaGNU result (PASS, FAIL, XPASS, &c) +# detail: For multi-phase (e.g. compile/link/execute), this will be +# the furthest phase which the test was able to attempt, +# so if the result is FAIL and this is "link phase", the test +# compiled but failed to link. This key may contain other +# auxiliary data. +# pseudotest: If 1, this test may not really exist; see "pseudotest" below. +# testgroup: Array of root-level testgroups, with keys: +# name: Name of the group. +# parent: Parent test group. +# test: As per above. +# testgroup: Child test groups. +# compiler: Version string from compiler used to run the tests (if detected) +sub parseLogFile($;$) { + my($logfile, $options) = @_; + $options ||= {}; + my $gccdir = $options->{gccdir} || ""; + my $return_diags = exists($options->{diagnostics}) ? $options->{diagnostics} : 1; + my $emit_fullname = exists($options->{fullname}) ? $options->{fullname} : 1; + my $is_gdb = 0; + my $gdbhack = ""; + + my %ret = (incomplete => 1, diagnostics => [], testgroup => []); + my(%testindex, %groupindex); + + open(LOGFILE, $logfile) or die "Couldn't open log file $logfile: $!\n"; + + my($currgroup, $currtest, $lastrun); + $currgroup = \%ret; + + my %monmap = (Jan => 0, Feb => 1, Mar => 2, Apr => 3, May => 4, Jun => 5, Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov => 10, Dec => 11); + + # We don't want gccdir matching on an empty string. + $gccdir ||= "this will never match, or my name isn't Reginald St. Croix"; + + my $line = 1; + while(<LOGFILE>) { + chomp; + s/\x{d}$//; #^M + next if $_ eq ""; + + if(/^gcc version/) { + $ret{compiler} = $_; + } elsif(/^got a .* signal, interrupted by user /) { + $ret{incomplete} = 2; + } elsif(/^\s*=== gdb/) { + $is_gdb = 1; + # The log file from the GDB test suite is prone to have random crap + # in front of test result lines, so we need to be looser about how + # we parse those for GDB. + $gdbhack = ".*"; + } elsif(/^(Test Run By \S+ on|runtest completed at) ... (.{3}) (\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2}) (\d{4})/) { + my $time = mktime($6, $5, $4, $3, $monmap{$2}, $7 - 1900); + if($1 eq "runtest completed at") { + $ret{end_time} = $time; + } else { + $ret{start_time} = $time; + } + } elsif(m<^Running (?!target )\Q$gccdir\E/?(\S+)> or m<^Running (?!target )\S*?((?:gcc|gdb|libstdc\+\+-v3)/testsuite/\S+)>) { + # We keep track of the last "Running foo/bar/baz.exp" line because + # some tests don't bother printing out the full paths of their files, + # and this gives us the directory information. + + $lastrun = $1; + $lastrun =~ s!/[^/]*/\.\.!!; # foo/bar/../baz -> foo/baz + $currgroup = mkGroupPath(\%ret, \%groupindex, split(m!/!, $lastrun)); + #$currgroup->{testfile} = $lastrun; + } elsif(/^Executing on (.*?):(.*)/) { + # Okay, if it's "Executing on host", it's a new + # file. If it's "Executing on unix", it's probably + # a test within the file -- an execution test, specifically -- + # (makes sense, no?) But not always, sometimes we + # see "Executing on unix" outside the context of a + # file. + + # Try to pick out the gccdir-relative filename. + # If we can't find it, it isn't really a new testfile, + # but a derived file. + my($exectype, $execwhat) = ($1, $2); + next if $execwhat =~ /^dsymutil/; + $execwhat =~ + s!.*?\s\Q$gccdir\E/?(\S+).*!$1! or + s!.*?/((?:gcc|gdb|libstdc\+\+-v3)/testsuite/\S+).*!$1! or + $exectype = "unix"; + + if($exectype eq "host" or !$currgroup) { + # New file + + my $nogroup = 0; + if($execwhat =~ / /) { + # We probably haven't parsed the file correctly. + # Try getting it from $lastrun. + + $execwhat = dirname($lastrun) . "/" . basename($execwhat) if $lastrun and $execwhat; + $execwhat =~ s/\s.*//; + + # At the end of each tool, it invokes "gcc -v" or "c++ -v" + # as a test. We don't really want to treat this as a test. + if($execwhat =~ m!/(gcc|c\+\+)$!) { + undef $currtest; + undef $currgroup; + $nogroup = 1; + } + } + + if(!$nogroup) { + undef $currtest; + $execwhat =~ s!/[^/]*/\.\.!!; # foo/bar/../baz -> foo/baz + + if($lastrun) { + my $lastbase = dirname($lastrun); + my $basegroup = $execwhat; + $basegroup =~ s!^\Q$lastbase\E/!!; + $execwhat = "$lastrun/$basegroup"; + } + + $currgroup = mkGroupPath(\%ret, \%groupindex, split(m!/!, $execwhat)); + #$currgroup->{testfile} = $execwhat; + } + } else { + # New test within current file + + $currtest = {}; + } + } elsif(/^# of/) { + # This line appears should appear near the end of summary files. + # If it doesn't, something went wrong. + + if($ret{incomplete} == 2) { + #Ah, but we previously saw indication that we were killed via a signal. + $ret{incomplete} = 1; + } else { + $ret{incomplete} = 0; + } + } elsif(/^testcase .* completed/) { + # End of a .exp file + undef $currtest; + undef $currgroup; + } elsif(/^$gdbhack(FAIL|PASS|UNRESOLVED|UNSUPPORTED|UNTESTED|XFAIL|XPASS|KFAIL|KPASS): (.*)/) { + # If the currtest already has a name, that means we've already seen + # its results, so what we have now is a new test. However, if we + # haven't seen results for currtest yet, that means currtest just + # has some diagnostics associated with it but no actual results, + # so just use that one. + undef $currtest if $currtest->{name}; + + my $phase = ""; # compile/link/execute + my($test, $result) = ($2, $1); + + # Compile/(link/)execute combining + if($test =~ /^(.*) compile\s*$/) { + $test = "$1 compile,link,execute"; + $phase = "compile"; + } elsif($test =~ /^(.*)-(.*) (link|execute)\s*$/) { + $test = "$1 compile,link,execute"; + if($3 eq "link") { + $phase = "link"; + } else { + $phase = "execute"; + } + } elsif($test =~ /(compile|compilation|execute|execution)/) { + my $phasematch = $1; + if($test =~ /^com/) { + $phase = "compile"; + } else { + $phase = "execute"; + } + $test =~ s!\Q$phasematch\E!compile,execute!; + } + + # gcov tests behave in non-standard fashion. + my $failwhy = ""; + $test =~ s/ gcov failed: (.*)// and $failwhy = $1; + + # And some other tests have random information after a colon :( + # But for scan-assembler, this really is part of the name. + if(!$is_gdb and $test !~ /scan-assembler/ and $test =~ s/:\s*(.+)//) { + $failwhy = $1; + } + + $test =~ s/\s*$//; + $test =~ s/^\s*$//; + + # Sometimes there's a test which shows up as: + # foo (test for excess errors) + # foo (something else) + # foo: error executing dg-final + # if it runs, but just: + # foo + # if it doesn't. When we see the top form, we create a + # "pseudotest" in the bottom form, so that comparisons + # can be made. + my $basetest = $test; + $basetest =~ s/:? .*//; + + if(exists($testindex{$test}) and !$testindex{$test}->{pseudotest}) { + $currtest = $testindex{$test}; + if(ispass($currtest->{result})) { + $currtest->{result} = $result; + $currtest->{detail} = "$phase phase"; + $currtest->{detail} .= "; $failwhy" if $failwhy; + } + } else { + # This might have been created earlier as a pseudotest. + # If so, overwrite it. + $currtest ||= $testindex{$test} || {}; + + $currtest->{name} = basename($test); + if($emit_fullname) { + $currtest->{fullname} = ($currgroup->{name} || dirname($test)) . "/$currtest->{name}"; + } + my $grpname = $currgroup->{name} || ""; + $currtest->{name} =~ s/^\s*\Q$grpname\E\s*//; + $currtest->{name} =~ s/^: // if $is_gdb; + # Sometimes there's a test at the root of the group. + # For instance, you'll have: + # FAIL: foo/bar.c (test for excess errors) + # UNRESOLVED: foo/bar.c: couldn't open "bar.s": no such file or directory + # In this case, groupname *is* the entire name, so the regex above will make the test name empty. + # In this case, we actually want to use the parent group and make this a test within that group. + my $orig_currgroup = $currgroup; + if(!$currtest->{name}) { + $currtest->{name} = $grpname; + $currgroup = $currgroup->{parent}; + $grpname = $currgroup->{name} || ""; + } + + $currtest->{result} = $result; + if($phase and $failwhy) { + $currtest->{detail} = "$phase phase; $failwhy" if $phase; + } elsif($phase) { + $currtest->{detail} = "$phase phase"; + } elsif($failwhy) { + $currtest->{detail} = $failwhy; + } + + $currgroup->{test} ||= []; + push @{$currgroup->{test}}, $currtest; + $testindex{$test} = $currtest; + $currgroup = $orig_currgroup; + + if($basetest ne $test) { + if(!exists($testindex{$basetest}) ) { + my $btbase = basename($basetest); + $testindex{$basetest} = { + name => $btbase, + result => $result, + pseudotest => 1, + fullname => $btbase + }; + if($emit_fullname) { + $testindex{basetest}->{fullname} = ($currgroup->{name} || dirname($basetest)) . "/$btbase"; + } + push @{$currgroup->{parent}->{test}}, $testindex{$basetest}; + } else { + # Only let the base test pass if all the sub-tests pass + $testindex{$basetest}->{result} = $result if !ispass($result); + } + } + + } + } elsif(/^\s+=== .* Summary ===\s*$/) { + undef $currgroup; + undef $currtest; + } + + my $severity; + if(/^(ERROR|WARNING|NOTE): (.*)/) { + $severity = $1; + my $message = $2; + + if($message eq "program timed out.") { + $currtest->{result} = "TIMEDOUT"; + } elsif( + $message =~ /can't read "(HOSTCC|libiconv)": no such variable/ or + $message =~ /no files matched glob pattern/ or + $message =~ /error executing dg-final: .*: no such file/ + ) { + $severity = "NOTE"; + } + } else { + $severity = "logline"; + } + + if($return_diags) { + my $dobj; + if($currtest) { + $currtest->{diagnostics} ||= []; + $dobj = $currtest->{diagnostics}; + } elsif($currgroup) { + $currgroup->{diagnostics} ||= []; + $dobj = $currgroup->{diagnostics}; + } else { + $dobj = $ret{diagnostics}; + } + + push @$dobj, {message => $_, severity => $severity, line => $line}; + } + } continue { + $line++; + } + close LOGFILE; + + return %ret; +} + +# Split a test into testdivs +sub splitTest($$) { + my($root, $test) = @_; + + $test->{fullname} =~ /^(\S+)\s*(.*)/; + my($path, $descriptor) = ($1, $2); + my @nodes = split(m!/!, $path); + push @nodes, $descriptor if $descriptor; + my $lastnode = pop @nodes; + + my $hash = $root; + foreach (@nodes) { + $hash->{testdiv} ||= {}; + $hash = $hash->{testdiv}->{$_} ||= {}; + } + + + $hash->{test} ||= {}; + $hash->{test}->{$lastnode} = $test; +} + + +# ==== Comparison ==== + +sub ispass($) { + my $result = shift; + + if($result eq "PASS" or $result eq "XFAIL" or $result eq "KFAIL") { + return 1; + } else { + return 0; + } +} + +1; diff --git a/gcc-4.8.3/contrib/download_ecj b/gcc-4.8.3/contrib/download_ecj new file mode 100755 index 000000000..5043f9407 --- /dev/null +++ b/gcc-4.8.3/contrib/download_ecj @@ -0,0 +1,25 @@ +#! /bin/sh + +# +# Download the ecj jar file needed by gcj. +# Run this from the top level of the gcc source tree and the libjava +# build will do the right thing. +# +# (C) 2006 Free Software Foundation +# +# 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 +# + +ftp -n sourceware.org << EOF +verbose +hash +user ftp '' +cd /pub/java +binary +get ecj-latest.jar +EOF + +mv ecj-latest.jar ecj.jar + diff --git a/gcc-4.8.3/contrib/download_prerequisites b/gcc-4.8.3/contrib/download_prerequisites new file mode 100755 index 000000000..f86f56121 --- /dev/null +++ b/gcc-4.8.3/contrib/download_prerequisites @@ -0,0 +1,38 @@ +#! /bin/sh + +# Download some prerequisites needed by gcc. +# Run this from the top level of the gcc source tree and the gcc +# build will do the right thing. +# +# (C) 2010 Free Software Foundation +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. + +MPFR=mpfr-2.4.2 +GMP=gmp-4.3.2 +MPC=mpc-0.8.1 + +wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 || exit 1 +tar xjf $MPFR.tar.bz2 || exit 1 +ln -sf $MPFR mpfr || exit 1 + +wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$GMP.tar.bz2 || exit 1 +tar xjf $GMP.tar.bz2 || exit 1 +ln -sf $GMP gmp || exit 1 + +wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPC.tar.gz || exit 1 +tar xzf $MPC.tar.gz || exit 1 +ln -sf $MPC mpc || exit 1 + +rm $MPFR.tar.bz2 $GMP.tar.bz2 $MPC.tar.gz || exit 1 diff --git a/gcc-4.8.3/contrib/filter_gcc_for_doxygen b/gcc-4.8.3/contrib/filter_gcc_for_doxygen new file mode 100755 index 000000000..3787eebbf --- /dev/null +++ b/gcc-4.8.3/contrib/filter_gcc_for_doxygen @@ -0,0 +1,12 @@ +#!/bin/sh + +# This filters GCC source before Doxygen can get confused by it; +# this script is listed in the doxyfile. The output is not very +# pretty, but at least we get output that Doxygen can understand. +# +# $1 is a source file of some kind. The source we wish doxygen to +# process is put on stdout. + +dir=`dirname $0` +perl $dir/filter_params.pl < $1 | perl $dir/filter_knr2ansi.pl +exit 0 diff --git a/gcc-4.8.3/contrib/filter_knr2ansi.pl b/gcc-4.8.3/contrib/filter_knr2ansi.pl new file mode 100755 index 000000000..6b43e4077 --- /dev/null +++ b/gcc-4.8.3/contrib/filter_knr2ansi.pl @@ -0,0 +1,45 @@ +#!/usr/bin/perl +# +# Goes through the input line by line to find K&R style function +# declarations, and replaces them with ANSI style declarations. +# +@blah = <>; + +for ($i = 0; $i < @blah; $i++) +{ + if ($blah[$i] =~ /^([a-zA-Z_0-9]+)\s*\([^)]+\)\s*$/) + { + $name = $1; + $funci = $i; + $blah[$funci]="$name ("; + $i++; + $lastline = $i; + while ($lastline < @blah && $blah[$lastline] !~ /^{/) + { + $lastline++; + } + $lastline--; + while ($i < @blah && $blah[$i] !~ /^{/) + { + $arg = $blah[$i]; + if ($i != $lastline) + { + $arg =~ s/;/,/g; + } + else + { + $arg =~ s/;//g; + } + $blah[$i] = ""; + $blah[$funci] = "$blah[$funci]" . "$arg"; + $i++; + } + $blah[$funci] = "$blah[$funci]" . ")\n"; + } +} + +for ($i = 0; $i < @blah; $i++) +{ + print $blah[$i]; +} + diff --git a/gcc-4.8.3/contrib/filter_params.pl b/gcc-4.8.3/contrib/filter_params.pl new file mode 100755 index 000000000..22dae6cc5 --- /dev/null +++ b/gcc-4.8.3/contrib/filter_params.pl @@ -0,0 +1,14 @@ +#!/usr/bin/perl + +# Filters out some of the #defines used throughout the GCC sources: +# - GTY(()) marks declarations for gengtype.c +# - PARAMS(()) is used for K&R compatibility. See ansidecl.h. + +while (<>) { + s/^\/\* /\/\*\* \@verbatim /; + s/\*\// \@endverbatim \*\//; + s/GTY[ \t]*\(\(.*\)\)//g; + s/[ \t]ATTRIBUTE_UNUSED//g; + s/PARAMS[ \t]*\(\((.*?)\)\)/\($1\)/sg; + print; +} diff --git a/gcc-4.8.3/contrib/gcc.doxy b/gcc-4.8.3/contrib/gcc.doxy new file mode 100644 index 000000000..7a284e754 --- /dev/null +++ b/gcc-4.8.3/contrib/gcc.doxy @@ -0,0 +1,1267 @@ +# Doxyfile 1.5.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + + +#----------------------------------------------------------------------------- +# NOTE: YOU MUST EDIT THE FOLLOWING HARDWIRED PATHS BEFORE USING THIS FILE. +#----------------------------------------------------------------------------- + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = @OUTPUT_DIRECTORY@ + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = @INPUT_FILTER@ + +#----------------------------------------------------------------------------- + + + + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "GCC Middle and Back End API Reference" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = YES + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command <command> <input-file>, where <command> is the value of +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = gcc + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = c-* */testsuite/* */config/* */.svn/* */po/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = letter + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = YES + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen will always +# show the root nodes and its direct children regardless of this setting. + +DOT_GRAPH_MAX_NODES = 50 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/gcc-4.8.3/contrib/gcc_build b/gcc-4.8.3/contrib/gcc_build new file mode 100755 index 000000000..6713066d7 --- /dev/null +++ b/gcc-4.8.3/contrib/gcc_build @@ -0,0 +1,325 @@ +#! /bin/sh + +######################################################################## +# +# File: gcc_build +# Author: Mark Mitchell +# Date: 2000-07-10 +# +# Adapted to Subversion by Ben Elliston <bje@au.ibm.com>, 2005-07-14. +# +# Contents: +# Script to automatically download and build GCC. +# +# Copyright (c) 2000, 2001, 2003, 2005 Free Software Foundation. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +######################################################################## + +######################################################################## +# Notes +######################################################################## + +# You can set the following variables in the environment. They +# have no corresponding command-line options because they should +# only be needed infrequently: +# +# MAKE The path to `make'. + +######################################################################## +# Functions +######################################################################## + +# Issue the error message given by $1 and exit with a non-zero +# exit code. + +error() { + echo "gcc_build: error: $1" + exit 1 +} + +# Issue a usage message explaining how to use this script. + +usage() { +cat <<EOF +gcc_build [-c configure_options] + [-d destination_directory] + [-m make_boot_options] + [-o objdir] + [-b branch_name] + [-u username] + [-p protocol] + [-t tarfile] + [-x make_check_options] + [bootstrap] + [build] + [checkout] + [configure] + [export] + [install] + [test] + [update] +EOF + exit 1 +} + +# Change to the directory given by $1. + +changedir() { + cd $1 || \ + error "Could not change directory to $1" +} + +# Checkout a fresh copy of the GCC build tree. + +checkout_gcc() { + # If the destination already exists, don't risk destroying it. + test -e ${DESTINATION} && \ + error "${DESTINATION} already exists" + + # Checkout the tree + test -n "${SVN_USERNAME}" && SVN_USERNAME="${SVN_USERNAME}@" + SVNROOT="${SVN_PROTOCOL}://${SVN_USERNAME}${SVN_SERVER}${SVN_REPOSITORY}${SVN_BRANCH}" + + $GCC_SVN co $SVNROOT ${DESTINATION} || \ + error "Could not check out GCC" +} + +# Update GCC. + +update_gcc() { + # If the destination does not already exist, complain. + test -d ${DESTINATION} || \ + error "${DESTINATION} does not exist" + + # Enter the destination directory. + changedir ${DESTINATION} + + # Update the tree + ./contrib/gcc_update || \ + error "Could not update GCC" +} + +# Configure for a build of GCC. + +configure_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + + # Remove the object directory. + rm -rf ${OBJDIR} + # Create it again. + mkdir ${OBJDIR} || \ + error "Could not create ${OBJDIR}" + # Enter it. + changedir ${OBJDIR} + + # Configure the tree. + echo "Configuring: ${DESTINATION}/configure ${CONFIGURE_OPTIONS}" + eval ${DESTINATION}/configure ${CONFIGURE_OPTIONS} || \ + error "Could not configure the compiler" +} + +# Bootstrap GCC. Assume configuration has already occurred. + +bootstrap_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + # Go to the object directory. + changedir ${OBJDIR} + + # Bootstrap the compiler + echo "Building: ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap" + eval ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap || \ + error "Could not bootstrap the compiler" +} + +# Test GCC. + +test_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + # Go to the object directory. + changedir ${OBJDIR} + + echo "Running tests... This will take a while." + eval \${MAKE} -k ${MAKE_CHECK_OPTIONS} check + ${DESTINATION}/contrib/test_summary +} + +# Export the GCC source tree. + +export_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + # Go up one level. + changedir .. + # Build a tarball of the source directory. + tar czf ${TARFILE} \ + --exclude=${OBJDIR} \ + --exclude=.svn \ + --exclude='.#*' \ + --exclude='*~' \ + `basename ${DESTINATION}` +} + +# Install GCC. + +install_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + # Go to the object directory. + changedir ${OBJDIR} + + ${MAKE} install || error "Installation failed" +} + +######################################################################## +# Initialization +######################################################################## + +# SVN command +GCC_SVN=${GCC_SVN-${SVN-svn}} +# The SVN server containing the GCC repository. +SVN_SERVER="gcc.gnu.org" +# The path to the repository on that server. +SVN_REPOSITORY="/svn/gcc/" +# The branch to check out from that server. +# Defaults to trunk if no branch is defined with -b. +SVN_BRANCH="" +# The SVN protocol to use. +SVN_PROTOCOL="svn" +# The username to use when connecting to the server. +# An empty string means anonymous. +SVN_USERNAME="" + +# The directory where the checked out GCC will be placed. +DESTINATION="${HOME}/dev/gcc" +# The relative path from the top of the source tree to the +# object directory. +OBJDIR="objdir" + +# The file where the tarred up sources will be placed. +TARFILE="${HOME}/dev/gcc.tgz" + +# Options to pass to configure. +CONFIGURE_OPTIONS= +# The `make' program. +MAKE=${MAKE:-make} +# Options to pass to "make bootstrap". +MAKE_BOOTSTRAP_OPTIONS= +# Options to pass to "make check". +MAKE_CHECK_OPTIONS= + +# Modes of operation +BOOTSTRAP=0 +CHECKOUT=0 +CONFIGURE=0 +EXPORT=0 +INSTALL=0 +TEST=0 +UPDATE=0 + +######################################################################## +# Main Program +######################################################################## + +# Issue usage if no parameters are given. +test $# -eq 0 && usage + +# Parse the options. +while getopts "c:d:m:o:p:t:b:u:x:" ARG; do + case $ARG in + c) CONFIGURE_OPTIONS="${OPTARG}";; + d) DESTINATION="${OPTARG}";; + m) MAKE_BOOTSTRAP_OPTIONS="${OPTARG}";; + o) OBJDIR="${OPTARG}";; + p) SVN_PROTOCOL="${OPTARG}";; + t) TARFILE="${OPTARG}";; + x) MAKE_CHECK_OPTIONS="${OPTARG}";; + b) SVN_BRANCH="${OPTARG}";; + u) SVN_USERNAME="${OPTARG}";; + \?) usage;; + esac +done +shift `expr ${OPTIND} - 1` + +# Handle the major modes. +while [ $# -ne 0 ]; do + case $1 in + bootstrap) BOOTSTRAP=1;; + build) CONFIGURE=1; BOOTSTRAP=1;; + checkout) CHECKOUT=1;; + configure) CONFIGURE=1;; + export) EXPORT=1;; + install) INSTALL=1;; + test) TEST=1;; + update) UPDATE=1;; + *) usage;; + esac + shift +done + +# Check the arguments for sanity. +if [ ${CHECKOUT} -ne 0 ] && [ ${UPDATE} -ne 0 ]; then + error "Cannot checkout and update simultaneously" +fi + +if [ ${CHECKOUT} -eq 0 ] && test -n "${SVN_BRANCH}"; then + error "Branch argument only makes sense when doing a checkout" +fi + +# Validate the branch name. +if test -n "${SVN_BRANCH}"; then + SVN_BRANCH="branches/${SVN_BRANCH}"; +else + SVN_BRANCH="trunk"; +fi + +# Checkout the tree. +if [ ${CHECKOUT} -ne 0 ]; then + checkout_gcc +elif [ ${UPDATE} -ne 0 ]; then + update_gcc +fi + +# Configure to build the tree. +if [ ${CONFIGURE} -ne 0 ]; then + configure_gcc +fi + +# Bootstrap the compiler. +if [ ${BOOTSTRAP} -ne 0 ]; then + bootstrap_gcc +fi + +# Test the compiler +if [ ${TEST} -ne 0 ]; then + test_gcc +fi + +# Install the compiler. +if [ ${INSTALL} -ne 0 ]; then + install_gcc +fi + +# Export the sources +if [ ${EXPORT} -ne 0 ]; then + export_gcc +fi diff --git a/gcc-4.8.3/contrib/gcc_update b/gcc-4.8.3/contrib/gcc_update new file mode 100755 index 000000000..212a99fc7 --- /dev/null +++ b/gcc-4.8.3/contrib/gcc_update @@ -0,0 +1,401 @@ +#! /bin/sh +# +# Update a local Subversion, Git or Mercurial tree from the GCC +# repository, with an emphasis on treating generated files correctly, so +# that autoconf, gperf et al are not required for the ``end'' user. +# +# (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, +# 2011 Free Software Foundation +# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998. +# +# 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 +# +# +# By default all command-line options are passed to `svn update` or `hg/git +# pull` in addition to $UPDATE_OPTIONS (defined below). If the first parameter +# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself +# are omitted. +# +# If the first parameter reads --patch, the second parameter is considered +# a patch file. +# +# If the first parameter is --touch, no svn operation will be performed, +# only generated files that appear to be out of date in the local tree +# will be touched. +# +# If the first parameter is --list, a list of the generated files and +# their dependencies will be printed; --help prints this message. +# +# If the first parameter is --silent, this script prints nothing other +# than error messages; the second parameter is then interpreted as above. +# +# Examples: +# +# contrib/gcc_update -r 8712 +# contrib/gcc_update --patch some-patch +# contrib/gcc_update --touch +# contrib/gcc_update --list + + +# Default options used when updating (none). +UPDATE_OPTIONS="" + +# Set the locale to C to make this script work for users with foreign +# locale like e.g. French UTF-8. +LANG=C +LC_ALL=C +export LANG LC_ALL + +######## Anything below shouldn't be changed by regular users. + +# Arrange for the value of $0 to be available for functions +self=$0 + +# This function prints its arguments to standard output unless +# "silent" is set. +unset silent +chat () { + if [ -z "$silent" ]; then + echo "$@" + fi +} + +# This function prints a list of all generated files, along with their +# dependencies. Note that only one target is supported per line: the +# colon is stripped from the output. +files_and_dependencies () { + sed -e 's/ *#.*//' -e '/^$/d' -e 's/://' <<\EOF +# fixincludes +fixincludes/configure: fixincludes/configure.ac fixincludes/aclocal.m4 +fixincludes/config.h.in: fixincludes/configure.ac fixincludes/aclocal.m4 +# intl library +intl/plural.c: intl/plural.y +intl/configure: intl/configure.ac intl/aclocal.m4 +intl/config.h.in: intl/configure.ac intl/aclocal.m4 +# Now, proceed to gcc automatically generated files +gcc/configure: gcc/configure.ac +gcc/cstamp-h.in: gcc/configure.ac +gcc/config.in: gcc/cstamp-h.in +gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def +gcc/config/arm/arm-tune.md: gcc/config/arm/arm-cores.def gcc/config/arm/gentune.sh +gcc/config/arm/arm-tables.opt: gcc/config/arm/arm-arches.def gcc/config/arm/arm-cores.def gcc/config/arm/arm-fpus.def gcc/config/arm/genopt.sh +gcc/config/avr/avr-tables.opt: gcc/config/avr/avr-mcus.def gcc/config/avr/genopt.sh +gcc/config/avr/t-multilib: gcc/config/avr/avr-mcus.def gcc/config/avr/genmultilib.awk +gcc/config/c6x/c6x-tables.opt: gcc/config/c6x/c6x-isas.def gcc/config/c6x/genopt.sh +gcc/config/c6x/c6x-sched.md: gcc/config/c6x/c6x-sched.md.in gcc/config/c6x/gensched.sh +gcc/config/c6x/c6x-mult.md: gcc/config/c6x/c6x-mult.md.in gcc/config/c6x/genmult.sh +gcc/config/m68k/m68k-tables.opt: gcc/config/m68k/m68k-devices.def gcc/config/m68k/m68k-isas.def gcc/config/m68k/m68k-microarchs.def gcc/config/m68k/genopt.sh +gcc/config/mips/mips-tables.opt: gcc/config/mips/mips-cpus.def gcc/config/mips/genopt.sh +gcc/config/rs6000/rs6000-tables.opt: gcc/config/rs6000/rs6000-cpus.def gcc/config/rs6000/genopt.sh +gcc/config/tilegx/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc +gcc/config/tilepro/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc +# And then, language-specific files +gcc/cp/cfns.h: gcc/cp/cfns.gperf +gcc/java/keyword.h: gcc/java/keyword.gperf +# testsuite +# Without this, _Pragma3.c can have a false negative. +gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h +# Similarly, without this, you will see: +# direct2s.c:35: warning: current file is older than direct2.c +gcc/testsuite/gcc.dg/cpp/direct2s.c: gcc/testsuite/gcc.dg/cpp/direct2.c +# lto-plugin +lto-plugin/configure: lto-plugin/configure.ac lto-plugin/aclocal.m4 +lto-plugin/Makefile.in: lto-plugin/Makefile.am lto-plugin/aclocal.m4 +# And libraries, at last +libbanshee/configure: libbanshee/configure.ac +libmudflap/configure: libmudflap/configure.ac +libobjc/configure: libobjc/configure.ac +zlib/aclocal.m4: zlib/configure.ac zlib/acinclude.m4 +zlib/Makefile.in: zlib/Makefile.am zlib/configure.ac zlib/aclocal.m4 +zlib/configure: zlib/configure.ac zlib/aclocal.m4 +fastjar/aclocal.m4: fastjar/configure.ac +fastjar/Makefile.in: fastjar/Makefile.am fastjar/configure.ac fastjar/aclocal.m4 +fastjar/configure: fastjar/configure.ac fastjar/aclocal.m4 +boehm-gc/aclocal.m4: boehm-gc/configure.ac +boehm-gc/Makefile.in: boehm-gc/Makefile.am boehm-gc/configure.ac boehm-gc/aclocal.m4 +boehm-gc/configure: boehm-gc/configure.ac boehm-gc/aclocal.m4 +libada/configure: libada/configure.ac +libffi/aclocal.m4: libffi/configure.ac libffi/acinclude.m4 +libffi/Makefile.in: libffi/Makefile.am libffi/configure.ac libffi/aclocal.m4 +libffi/configure: libffi/configure.ac libffi/aclocal.m4 +libffi/fficonfig.h.in: libffi/configure.ac libffi/aclocal.m4 +libgfortran/aclocal.m4: libgfortran/configure.ac libgfortran/acinclude.m4 +libgfortran/Makefile.in: libgfortran/Makefile.am libgfortran/configure.ac libgfortran/aclocal.m4 +libquadmath/configure: libquadmath/configure.ac libquadmath/aclocal.m4 +libquadmath/aclocal.m4: libquadmath/configure.ac libquadmath/acinclude.m4 +libquadmath/Makefile.in: libquadmath/Makefile.am libquadmath/configure.ac libgfortran/aclocal.m4 +libgfortran/configure: libgfortran/configure.ac libgfortran/aclocal.m4 +libjava/aclocal.m4: libjava/configure.ac +libjava/Makefile.in: libjava/Makefile.am libjava/configure.ac libjava/aclocal.m4 +libjava/configure: libjava/configure.ac libjava/aclocal.m4 +libjava/libltdl/aclocal.m4: libjava/libltdl/configure.ac libjava/libltdl/acinclude.m4 +libjava/libltdl/Makefile.in: libjava/libltdl/Makefile.am libjava/libltdl/configure.ac libjava/libltdl/aclocal.m4 +libjava/libltdl/configure: libjava/libltdl/configure.ac libjava/libltdl/aclocal.m4 +libjava/libltdl/config-h.in: libjava/libltdl/configure.ac libjava/libltdl/aclocal.m4 +libcpp/aclocal.m4: libcpp/configure.ac +libcpp/Makefile.in: libcpp/configure.ac libcpp/aclocal.m4 +libcpp/configure: libcpp/configure.ac libcpp/aclocal.m4 +libgomp/aclocal.m4: libgomp/configure.ac libgomp/acinclude.m4 +libgomp/Makefile.in: libgomp/Makefile.am libgomp/aclocal.m4 +libgomp/testsuite/Makefile.in: libgomp/Makefile.am libgomp/aclocal.m4 +libgomp/configure: libgomp/configure.ac libgomp/aclocal.m4 +libgomp/config.h.in: libgomp/configure.ac libgomp/aclocal.m4 +libitm/aclocal.m4: libitm/configure.ac libitm/acinclude.m4 +libitm/Makefile.in: libitm/Makefile.am libitm/aclocal.m4 +libitm/testsuite/Makefile.in: libitm/testsuite/Makefile.am libitm/aclocal.m4 +libitm/configure: libitm/configure.ac libitm/aclocal.m4 +libitm/config.h.in: libitm/configure.ac libitm/aclocal.m4 +libatomic/aclocal.m4: libatomic/configure.ac libatomic/acinclude.m4 +libatomic/Makefile.in: libatomic/Makefile.am libatomic/aclocal.m4 +libatomic/testsuite/Makefile.in: libatomic/testsuite/Makefile.am libatomic/aclocal.m4 +libatomic/configure: libatomic/configure.ac libatomic/aclocal.m4 +libatomic/auto-config.h.in: libatomic/configure.ac libatomic/aclocal.m4 +libsanitizer/aclocal.m4: libsanitizer/configure.ac libsanitizer/acinclude.m4 +libsanitizer/Makefile.in: libsanitizer/Makefile.am libsanitizer/aclocal.m4 +libsanitizer/configure: libsanitizer/configure.ac libsanitizer/aclocal.m4 +libsanitizer/asan/Makefile.in: libsanitizer/asan/Makefile.am libsanitizer/aclocal.m4 +libsanitizer/interception/Makefile.in: libsanitizer/interception/Makefile.am libsanitizer/aclocal.m4 +libsanitizer/sanitizer_common/Makefile.in: libsanitizer/sanitizer_common/Makefile.am libsanitizer/aclocal.m4 +# Top level +Makefile.in: Makefile.tpl Makefile.def +configure: configure.ac config/acx.m4 +EOF +} + + +# This function touches generated files such that the ``end'' user does +# not have to rebuild them. +touch_files () { + rm -f Makefile.$$ + echo 'all: \' > Makefile.$$ + files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$ + echo '; @true' >> Makefile.$$ + files_and_dependencies | sed 's, ,: ,' >> Makefile.$$ + files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$ + echo ':' >> Makefile.$$ + echo ' @for f in $? $@; do test -f $$f || exit 0; done; \' >> Makefile.$$ + echo ' echo Touching $@...; \' >> Makefile.$$ + chat ' echo Touching $@... 1>&2; \' >> Makefile.$$ + echo ' touch $@' >> Makefile.$$ + files_and_dependencies | sed 's,[^ ]* ,,;s,$, :,' >> Makefile.$$ + + # We would have to explicitly shut off the "Entering... Leaving..." + # messages through "--no-print-directory" to handle the case when + # we were called from a recursive invocation (i.e. "$(MAKE)" in a + # Makefile, not just make). Passing only "-s" doesn't help then, + # because make has helpfully added "-w" to MAKEFLAGS automatically. + # Unfortunately we do not require GNU make other than for building + # and testing, so let's just grep known text explicitly echoed by + # the rule. + while ${MAKE-make} -s -f Makefile.$$ all | grep Touching > /dev/null; do + sleep 1 + done 2>&1 + rm -f Makefile.$$ +} + + +# Whenever we update the tree or install a patch, we may be modifying +# this script. By re-execing it, we ensure that the appropriate +# dependencies and rules will be used. +touch_files_reexec () { + chat "Adjusting file timestamps" + exec ${CONFIG_SHELL-/bin/sh} $self ${silent+"--silent"} --touch +} + +# This functions applies a patch to an existing tree. +apply_patch () { + if [ -f "$1" ]; then + echo "Applying patch file $1" + case $1 in + *gz) + gzip -d -c "$1" | patch -p1 ;; + *bz2) + bzip2 -d -c "$1" | patch -p1 ;; + *) + patch -p1 < "$1";; + esac + fi + touch_files_reexec +} + +# Check whether this indeed looks like a local tree. +if [ ! -f gcc/version.c ]; then + echo "This does not seem to be a GCC tree!" + exit +fi + +case "$1" in +--silent) + silent=t + shift + ;; +esac + +case "$1" in +# First of all, check whether we are going to process a patch. +--patch) + if test "$#" != 2; then + echo "$1" expects only one argument >&2 + exit 1 + fi + apply_patch "${2}" + exit $? + ;; + +--touch) + if test "$#" != 1; then + echo "$1" does not expect any argument >&2 + exit 1 + fi + touch_files + exit $? + ;; + +--list) + if test "$#" != 1; then + echo "$1" does not expect any argument >&2 + exit 1 + fi + files_and_dependencies | sed 's/ /: /' + exit $? + ;; + +--help) + sed -e '1,2d' -e '/^UPDATE_OPTIONS=/{i\ +\ + +p +}' \ + -e '/^$/,$d' -e 's/#//' -e 's/^ //' < $0 + exit $? + ;; + +esac + +# Check for known version control systems. +if [ -d .git ]; then + GCC_GIT=${GCC_GIT-${GIT-git}} + vcs_type="git" +elif [ -d .hg ]; then + GCC_HG=${GCC_HG-${HG-hg}} + vcs_type="hg" +elif [ -d .svn ]; then + GCC_SVN=${GCC_SVN-${SVN-svn}} + vcs_type="svn" +else + echo "This does not seem to be a GCC GIT/HG/SVN tree!" + exit +fi + +# Check command-line options +if [ x"${1}"x = x"--nostdflags"x ]; then + shift +else + set -- $UPDATE_OPTIONS ${1+"$@"} +fi + +case $vcs_type in + git) + chat "Updating GIT tree" + + $GCC_GIT diff --quiet --exit-code HEAD + if [ $? -ne 0 ]; then + echo "Attempting to update a dirty git tree!" >&2 + echo "Commit or stash your changes first and retry." >&2 + exit 1 + fi + + $GCC_GIT pull ${silent+-q} --rebase ${1+"$@"} + if [ $? -ne 0 ]; then + (touch_files_reexec) + echo "git pull of full tree failed." >&2 + exit 1 + fi + + revision=`$GCC_GIT log -n1 --pretty=%p:%t:%H` + branch=`$GCC_GIT name-rev --name-only HEAD || :` + ;; + + hg) + chat "Updating HG tree" + + # Add -q so untracked files aren't listed. + if [ `$GCC_HG status -q | wc -l` -gt 0 ]; then + echo "Attempting to update a dirty hg tree!" >&2 + echo "Commit or revert your changes first and retry." >&2 + exit 1 + fi + + # Check for mq extension. mq patches must be popped so tip has + # been converted from the SVN tree. + if [ -d .hg/patches ] && [ `$GCC_HG qapplied | wc -l` -gt 0 ]; then + # FIXME: Perhaps pop queue instead? We could do that since we + # know the tree is clean. + echo "Attempting to update hg tree with mq patches applied!" >&2 + echo "Pop your patches first and retry." >&2 + exit 1 + fi + + # Update tree, but make sure to only pull the default branch. + # Otherwise all branches in the upstream repo are added, even if + # only a single one has been cloned. + $GCC_HG pull ${silent+-q} -r`$GCC_HG branch` ${1+"$@"} + if [ $? -ne 0 ]; then + (touch_files_reexec) + echo "hg pull of full tree failed." >&2 + exit 1 + fi + + # Update tree. Needs to be done separately from pull so + # gcc_update -rREV works. + $GCC_HG update ${silent+-q} ${1+"$@"} + if [ $? -ne 0 ]; then + (touch_files_reexec) + echo "hg update of full tree failed." >&2 + exit 1 + fi + + # Extract SVN revision corresponding to parents, as stored by + # hg convert. Before hg 1.4.3, there's no template keyword + # corresponding to the extra: tag, so need to use hg log --debug + # to extract the info. + parents=`$GCC_HG parents --template '{rev}'` + convert_revision=`$GCC_HG log --debug -r$parents | \ + sed -ne "/^extra:.*convert_revision=svn:/ { + s%^[^/]*/%% + p + }"` + revision=`echo $convert_revision | sed -e 's/.*@//'` + branch=`echo $convert_revision | sed -e 's%branches/%%' -e 's/@.*//'` + ;; + + svn) + chat "Updating SVN tree" + + $GCC_SVN ${silent+-q} --non-interactive update ${1+"$@"} + if [ $? -ne 0 ]; then + (touch_files_reexec) + echo "SVN update of full tree failed." >&2 + exit 1 + fi + + revision=`$GCC_SVN info | awk '/Revision:/ { print $2 }'` + branch=`$GCC_SVN info | sed -ne "/^URL:/ { + s,.*/trunk,trunk, + s,.*/branches/,, + s,.*/tags/,, + p + }"` + ;; +esac + +rm -f LAST_UPDATED gcc/REVISION +{ + date + echo "`TZ=UTC date` (revision $revision)" +} > LAST_UPDATED +echo "[$branch revision $revision]" > gcc/REVISION + +touch_files_reexec diff --git a/gcc-4.8.3/contrib/gennews b/gcc-4.8.3/contrib/gennews new file mode 100755 index 000000000..962bef2f3 --- /dev/null +++ b/gcc-4.8.3/contrib/gennews @@ -0,0 +1,68 @@ +#! /bin/sh +# +# Script to generate the NEWS file from online release notes. +# Contributed by Joseph Myers <jsm28@cam.ac.uk>. +# +# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010, 2011, +# 2012 Free Software Foundation, Inc. +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +website=http://gcc.gnu.org/ +files=" + gcc-4.8/index.html gcc-4.8/changes.html + gcc-4.7/index.html gcc-4.7/changes.html + gcc-4.6/index.html gcc-4.6/changes.html + gcc-4.5/index.html gcc-4.5/changes.html + gcc-4.4/index.html gcc-4.4/changes.html + gcc-4.3/index.html gcc-4.3/changes.html + gcc-4.2/index.html gcc-4.2/changes.html + gcc-4.1/index.html gcc-4.1/changes.html + gcc-4.0/index.html gcc-4.0/changes.html + gcc-3.4/index.html gcc-3.4/changes.html + gcc-3.3/index.html gcc-3.3/changes.html + gcc-3.2/index.html gcc-3.2/changes.html + gcc-3.1/index.html gcc-3.1/changes.html + gcc-3.0/gcc-3.0.html gcc-3.0/features.html gcc-3.0/caveats.html + gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html + egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html + egcs-1.0/index.html egcs-1.0/features.html egcs-1.0/caveats.html" + +set -e + +cat <<EOF +This file contains information about GCC releases which has been generated +automatically from the online release notes. It covers releases of GCC +(and the former EGCS project) since EGCS 1.0, on the line of development +that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2, +see ONEWS. + +EOF + +header="======================================================================" + +echo $header + +for file in $files; do + wfile=$website$file + echo $wfile + # We lie to Lynx about the kind of terminal in use because we + # want to get consistent output everywhere, and we want this + # script to work even when it is not run interactively. + env TERM=vt100 lynx -dump $wfile + echo $header +done diff --git a/gcc-4.8.3/contrib/gthr_supp_vxw_5x.c b/gcc-4.8.3/contrib/gthr_supp_vxw_5x.c new file mode 100644 index 000000000..6ce288f3e --- /dev/null +++ b/gcc-4.8.3/contrib/gthr_supp_vxw_5x.c @@ -0,0 +1,92 @@ +/* Kernel-side additional module for the VxWorks threading support + logic for GCC. Written 2002 by Zack Weinberg. + + This file is distributed with GCC, but it is not part of GCC. + The contents of this file are in the public domain. */ + +/* If you are using the Tornado IDE, copy this file to + $WIND_BASE/target/config/comps/src/gthread_supp.c. Then create a + file named 10comp_gthread_supp.cdf in target/config/comps/vxWorks + with the following contents: + + Component INCLUDE_GCC_GTHREAD { + NAME GCC 3.x gthread support (required by C++) + CONFIGLETTES gthread_supp.c + REQUIRES INCLUDE_CPLUS + INCLUDE_WHEN INCLUDE_CPLUS + _FOLDER FOLDER_CPLUS + } + + If you are using command line builds, instead copy this file to + $WIND_BASE/target/src/config/gthread_supp.c, and add the following + block to target/src/config/usrExtra.c: + + #ifdef INCLUDE_CPLUS + #include "../../src/config/gthread_supp.c" + #endif + + You should now be able to rebuild your application using GCC 3.x. */ + +#include <vxWorks.h> +#include <taskLib.h> + +/* This file provides these routines: */ +extern void *__gthread_get_tsd_data (WIND_TCB *tcb); +extern void __gthread_set_tsd_data (WIND_TCB *tcb, void *data); + +extern void __gthread_enter_tsd_dtor_context (WIND_TCB *tcb); +extern void __gthread_leave_tsd_dtor_context (WIND_TCB *tcb); + +/* Set and retrieve the TSD data block for the task TCB. + + Possible choices for TSD_SLOT are: + reserved1 + reserved2 + spare1 + spare2 + spare3 + spare4 + (these are all fields of the TCB structure; all have type 'int'). + + If you find that the slot chosen by default is already used for + something else, simply change the #define below and recompile this + file. No other file should reference TSD_SLOT directly. */ + +/* WARNING: This code is not 64-bit clean (it assumes that a pointer + can be held in an 'int' without truncation). As much of the rest + of VxWorks also makes this assumption, we can't really avoid it. */ + +#define TSD_SLOT reserved1 + +void * +__gthread_get_tsd_data (WIND_TCB *tcb) +{ + return (void *) (tcb->TSD_SLOT); +} + +void +__gthread_set_tsd_data (WIND_TCB *tcb, void *data) +{ + tcb->TSD_SLOT = (int) data; +} + +/* Enter and leave "TSD destructor context". This is defined as a + state in which it is safe to call free() from a task delete hook + on a memory block allocated by the task being deleted. + For VxWorks 5.x, nothing needs to be done. */ + +#if __GNUC__ >= 2 +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif + +void +__gthread_enter_tsd_dtor_context (WIND_TCB *tcb UNUSED) +{ +} + +void +__gthread_leave_tsd_dtor_context (WIND_TCB *tcb UNUSED) +{ +} diff --git a/gcc-4.8.3/contrib/index-prop b/gcc-4.8.3/contrib/index-prop new file mode 100755 index 000000000..1ea648989 --- /dev/null +++ b/gcc-4.8.3/contrib/index-prop @@ -0,0 +1,26 @@ +#! /usr/bin/perl -wi +# Fix up the output of cvs diff -c so that it works with patch. +# We do this by propagating the full pathname from the Index: line +# into the diff itself. +# +# Thrown together by Jason Merrill <jason@cygnus.com> + +while (<>) +{ + if (/^Index: (.*)/) + { + $full = $1; + print; + for (1..7) + { + $_ = <>; + s/^([-+*]{3}) [^\t]+\t/$1 $full\t/ + unless m{ /dev/null\t}; + print; + } + } + else + { + print; + } +} diff --git a/gcc-4.8.3/contrib/make-obstacks-texi.pl b/gcc-4.8.3/contrib/make-obstacks-texi.pl new file mode 100644 index 000000000..63a0bac0b --- /dev/null +++ b/gcc-4.8.3/contrib/make-obstacks-texi.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl -w + +# (C) 2013 Free Software Foundation +# Contributed by Tobias Burnus +# +# 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 + +use strict; +use File::Basename; + + +if ($#ARGV != 0 or $ARGV[0] eq "") { + my $name = basename($0); + + print "\nUSAGE: `$name` memory.texi\n\n"; + print "Reads GLIBC's manual/memory.texi and extracts the obstacks section\n" + ."Redirect the output to update GCC's libiberty/obstacks.texi\n\n"; + exit 1; +} + +open (IN, "<$ARGV[0]") || die "Cannot open '$ARGV[0]': $!"; +my $data = join ("", <IN>); +close (IN); + +$data =~ s/.*\@node Obstacks\n/\@node Obstacks\n/s; +$data =~ s/\n\@node [^\n]+\n\@subsection.*/\n/s; + +# Add refs to GLIBC +$data =~ s/(\@p?xref{[^}]*)}/$1, , , libc, The GNU C Library Reference Manual}/gs; + + +# And undo the refs which are in this file +my @nodes = grep /^\@node /, (split /\n/, $data); + +foreach my $node (@nodes) { + $node =~ s/\@node //; + $node =~ s/,.*//; + $node =~ s/ / *\n?/g; + chomp ($node); + + $data =~ s/(\@p?xref{$node), , , libc, The GNU C Library Reference Manual}/$1}/gsi; +} + +print $data; diff --git a/gcc-4.8.3/contrib/make_sunver.pl b/gcc-4.8.3/contrib/make_sunver.pl new file mode 100644 index 000000000..8a90b1fea --- /dev/null +++ b/gcc-4.8.3/contrib/make_sunver.pl @@ -0,0 +1,333 @@ +#!/usr/bin/perl -w + +# make_sunver.pl +# +# This script takes at least two arguments, a GNU style version script and +# a list of object and archive files, and generates a corresponding Sun +# style version script as follows: +# +# Each glob pattern, C++ mangled pattern or literal in the input script is +# matched against all global symbols in the input objects, emitting those +# that matched (or nothing if no match was found). +# A comment with the original pattern and its type is left in the output +# file to make it easy to understand the matches. +# +# It uses elfdump when present (native), GNU readelf otherwise. +# It depends on the GNU version of c++filt, since it must understand the +# GNU mangling style. + +use FileHandle; +use IPC::Open2; + +# Enforce C locale. +$ENV{'LC_ALL'} = "C"; +$ENV{'LANG'} = "C"; + +# Input version script, GNU style. +my $symvers = shift; + +########## +# Get all the symbols from the library, match them, and add them to a hash. + +my %sym_hash = (); + +# List of objects and archives to process. +my @OBJECTS = (); + +# List of shared objects to omit from processing. +my @SHAREDOBJS = (); + +# Filter out those input archives that have corresponding shared objects to +# avoid adding all symbols matched in the archive to the output map. +foreach $file (@ARGV) { + if (($so = $file) =~ s/\.a$/.so/ && -e $so) { + printf STDERR "omitted $file -> $so\n"; + push (@SHAREDOBJS, $so); + } else { + push (@OBJECTS, $file); + } +} + +# We need to detect and ignore hidden symbols. Solaris nm can only detect +# this in the harder to parse default output format, and GNU nm not at all, +# so use elfdump -s in the native case and GNU readelf -s otherwise. +# GNU objdump -t cannot be used since it produces a variable number of +# columns. + +# The path to elfdump. +my $elfdump = "/usr/ccs/bin/elfdump"; + +if (-f $elfdump) { + open ELFDUMP,$elfdump.' -s '.(join ' ',@OBJECTS).'|' or die $!; + my $skip_arsym = 0; + + while (<ELFDUMP>) { + chomp; + + # Ignore empty lines. + if (/^$/) { + # End of archive symbol table, stop skipping. + $skip_arsym = 0 if $skip_arsym; + next; + } + + # Keep skipping until end of archive symbol table. + next if ($skip_arsym); + + # Ignore object name header for individual objects and archives. + next if (/:$/); + + # Ignore table header lines. + next if (/^Symbol Table Section:/); + next if (/index.*value.*size/); + + # Start of archive symbol table: start skipping. + if (/^Symbol Table: \(archive/) { + $skip_arsym = 1; + next; + } + + # Split table. + (undef, undef, undef, undef, $bind, $oth, undef, $shndx, $name) = split; + + # Error out for unknown input. + die "unknown input line:\n$_" unless defined($bind); + + # Ignore local symbols. + next if ($bind eq "LOCL"); + # Ignore hidden symbols. + next if ($oth eq "H"); + # Ignore undefined symbols. + next if ($shndx eq "UNDEF"); + # Error out for unhandled cases. + if ($bind !~ /^(GLOB|WEAK)/ or $oth ne "D") { + die "unhandled symbol:\n$_"; + } + + # Remember symbol. + $sym_hash{$name}++; + } + close ELFDUMP or die "$elfdump error"; +} else { + open READELF, 'readelf -s -W '.(join ' ',@OBJECTS).'|' or die $!; + # Process each symbol. + while (<READELF>) { + chomp; + + # Ignore empty lines. + next if (/^$/); + + # Ignore object name header. + next if (/^File: .*$/); + + # Ignore table header lines. + next if (/^Symbol table.*contains.*:/); + next if (/Num:.*Value.*Size/); + + # Split table. + (undef, undef, undef, undef, $bind, $vis, $ndx, $name) = split; + + # Error out for unknown input. + die "unknown input line:\n$_" unless defined($bind); + + # Ignore local symbols. + next if ($bind eq "LOCAL"); + # Ignore hidden symbols. + next if ($vis eq "HIDDEN"); + # Ignore undefined symbols. + next if ($ndx eq "UND"); + # Error out for unhandled cases. + if ($bind !~ /^(GLOBAL|WEAK)/ or $vis ne "DEFAULT") { + die "unhandled symbol:\n$_"; + } + + # Remember symbol. + $sym_hash{$name}++; + } + close READELF or die "readelf error"; +} + +########## +# The various types of glob patterns. +# +# A glob pattern that is to be applied to the demangled name: 'cxx'. +# A glob patterns that applies directly to the name in the .o files: 'glob'. +# This pattern is ignored; used for local variables (usually just '*'): 'ign'. + +# The type of the current pattern. +my $glob = 'glob'; + +# We're currently inside `extern "C++"', which Sun ld doesn't understand. +my $in_extern = 0; + +# The c++filt command to use. This *must* be GNU c++filt; the Sun Studio +# c++filt doesn't handle the GNU mangling style. +my $cxxfilt = $ENV{'CXXFILT'} || "c++filt"; + +# The current version name. +my $current_version = ""; + +# Was there any attempt to match a symbol to this version? +my $matches_attempted; + +# The number of versions which matched this symbol. +my $matched_symbols; + +open F,$symvers or die $!; + +# Print information about generating this file +print "# This file was generated by make_sunver.pl. DO NOT EDIT!\n"; +print "# It was generated by:\n"; +printf "# %s %s %s\n", $0, $symvers, (join ' ',@ARGV); +printf "# Omitted archives with corresponding shared libraries: %s\n", + (join ' ', @SHAREDOBJS) if $#SHAREDOBJS >= 0; +print "#\n\n"; + +while (<F>) { + # Lines of the form '};' + if (/^([ \t]*)(\}[ \t]*;[ \t]*)$/) { + $glob = 'glob'; + if ($in_extern) { + $in_extern--; + print "$1##$2\n"; + } else { + print; + } + next; + } + + # Lines of the form '} SOME_VERSION_NAME_1.0;' + if (/^[ \t]*\}[ \tA-Z0-9_.a-z]+;[ \t]*$/) { + $glob = 'glob'; + # We tried to match symbols agains this version, but none matched. + # Emit dummy hidden symbol to avoid marking this version WEAK. + if ($matches_attempted && $matched_symbols == 0) { + print " hidden:\n"; + print " .force_WEAK_off_$current_version = DATA S0x0 V0x0;\n"; + } + print; next; + } + + # Comment and blank lines + if (/^[ \t]*\#/) { print; next; } + if (/^[ \t]*$/) { print; next; } + + # Lines of the form '{' + if (/^([ \t]*){$/) { + if ($in_extern) { + print "$1##{\n"; + } else { + print; + } + next; + } + + # Lines of the form 'SOME_VERSION_NAME_1.1 {' + if (/^([A-Z0-9_.]+)[ \t]+{$/) { + # Record version name. + $current_version = $1; + # Reset match attempts, #matched symbols for this version. + $matches_attempted = 0; + $matched_symbols = 0; + print; + next; + } + + # Ignore 'global:' + if (/^[ \t]*global:$/) { print; next; } + + # After 'local:', globs should be ignored, they won't be exported. + if (/^[ \t]*local:$/) { + $glob = 'ign'; + print; + next; + } + + # After 'extern "C++"', globs are C++ patterns + if (/^([ \t]*)(extern \"C\+\+\"[ \t]*)$/) { + $in_extern++; + $glob = 'cxx'; + # Need to comment, Sun ld cannot handle this. + print "$1##$2\n"; next; + } + + # Chomp newline now we're done with passing through the input file. + chomp; + + # Catch globs. Note that '{}' is not allowed in globs by this script, + # so only '*' and '[]' are available. + if (/^([ \t]*)([^ \t;{}#]+);?[ \t]*$/) { + my $ws = $1; + my $ptn = $2; + # Turn the glob into a regex by replacing '*' with '.*', '?' with '.'. + # Keep $ptn so we can still print the original form. + ($pattern = $ptn) =~ s/\*/\.\*/g; + $pattern =~ s/\?/\./g; + + if ($glob eq 'ign') { + # We're in a local: * section; just continue. + print "$_\n"; + next; + } + + # Print the glob commented for human readers. + print "$ws##$ptn ($glob)\n"; + # We tried to match a symbol to this version. + $matches_attempted++; + + if ($glob eq 'glob') { + my %ptn_syms = (); + + # Match ptn against symbols in %sym_hash. + foreach my $sym (keys %sym_hash) { + # Maybe it matches one of the patterns based on the symbol in + # the .o file. + $ptn_syms{$sym}++ if ($sym =~ /^$pattern$/); + } + + foreach my $sym (sort keys(%ptn_syms)) { + $matched_symbols++; + print "$ws$sym;\n"; + } + } elsif ($glob eq 'cxx') { + my %dem_syms = (); + + # Verify that we're actually using GNU c++filt. Other versions + # most likely cannot handle GNU style symbol mangling. + my $cxxout = `$cxxfilt --version 2>&1`; + $cxxout =~ m/GNU/ or die "$0 requires GNU c++filt to function"; + + # Talk to c++filt through a pair of file descriptors. + # Need to start a fresh instance per pattern, otherwise the + # process grows to 500+ MB. + my $pid = open2(*FILTIN, *FILTOUT, $cxxfilt) or die $!; + + # Match ptn against symbols in %sym_hash. + foreach my $sym (keys %sym_hash) { + # No? Well, maybe its demangled form matches one of those + # patterns. + printf FILTOUT "%s\n",$sym; + my $dem = <FILTIN>; + chomp $dem; + $dem_syms{$sym}++ if ($dem =~ /^$pattern$/); + } + + close FILTOUT or die "c++filt error"; + close FILTIN or die "c++filt error"; + # Need to wait for the c++filt process to avoid lots of zombies. + waitpid $pid, 0; + + foreach my $sym (sort keys(%dem_syms)) { + $matched_symbols++; + print "$ws$sym;\n"; + } + } else { + # No? Well, then ignore it. + } + next; + } + # Important sanity check. This script can't handle lots of formats + # that GNU ld can, so be sure to error out if one is seen! + die "strange line `$_'"; +} +close F; diff --git a/gcc-4.8.3/contrib/mklog b/gcc-4.8.3/contrib/mklog new file mode 100755 index 000000000..a874c7215 --- /dev/null +++ b/gcc-4.8.3/contrib/mklog @@ -0,0 +1,151 @@ +#!/usr/bin/perl +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# This script parses a .diff file generated with 'diff -up' or 'diff -cp' +# and writes a skeleton ChangeLog file to stdout. It does not try to be +# very smart when parsing function names, but it produces a reasonable +# approximation. +# +# Author: Diego Novillo <dnovillo@google.com> and +# Cary Coutant <ccoutant@google.com> + +# Change these settings to reflect your profile. +$username = $ENV{'USER'}; +$name = `finger $username | grep -o 'Name: .*'`; +@n = split(/: /, $name); +$name = @n[1]; chop($name); +$addr = $username . "\@my.domain.org"; +$date = `date +%Y-%m-%d`; chop ($date); + + +#----------------------------------------------------------------------------- +# Program starts here. You should not need to edit anything below this +# line. +#----------------------------------------------------------------------------- +if ( $#ARGV != 0 ) { + $prog = `basename $0`; chop ($prog); + print "usage: $prog file.diff\n\n"; + print "Adds a ChangeLog template to the start of file.diff\n"; + print "It assumes that file.diff has been created with -up or -cp.\n"; + exit 1; +} + +$diff = $ARGV[0]; +$dir = `dirname $diff`; chop ($dir); +$basename = `basename $diff`; chop ($basename); +$cl = `mktemp /tmp/$basename.XXXXXX` || exit 1; chop ($cl); +$hdrline = "$date $name <$addr>"; + +open (CLFILE, ">$cl") or die "Could not open file $cl for writing"; + +print CLFILE "$hdrline\n\n"; + +# For every file in the .diff print all the function names in ChangeLog +# format. +$bof = 0; +open (DFILE, $diff) or die "Could not open file $diff for reading"; +while (<DFILE>) { + # Check if we found a new file. + if (/^\+\+\+ (b\/)?(\S+)/) { + # If we have not seen any function names in the previous file (ie, + # $bof == 1), we just write out a ':' before starting the next + # file. + if ($bof == 1) { + print CLFILE ":\n"; + } + $filename = $2; + print CLFILE "\t* $filename"; + $bof = 1; + } + + # Remember the last line in a unified diff block that might start + # a new function. + if (/^[-+ ]([a-zA-Z0-9_].*)/) { + $save_fn = $1; + } + + # If we find a new function, print it in brackets. Special case if + # this is the first function in a file. + # + # Note that we don't try too hard to find good matches. This should + # return a superset of the actual set of functions in the .diff file. + # + # The first two patterns work with context diff files (diff -c). The + # third pattern works with unified diff files (diff -u). + # + # The fourth pattern looks for the starts of functions or classes + # within a unified diff block. + + if (/^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/ + || /^[\-\+\!] ([a-zA-Z0-9_]+)[ \t]*\(.*/ + || /^@@ .* @@ ([a-zA-Z0-9_].*)/ + || /^[-+ ](\{)/) + { + $_ = $1; + my $fn; + if (/^\{/) { + # Beginning of a new function. + $_ = $save_fn; + } else { + $save_fn = ""; + } + if (/;$/) { + # No usable function name found. + } elsif (/^((class|struct|union|enum) [a-zA-Z0-9_]+)/) { + # Discard stuff after the class/struct/etc. tag. + $fn = $1; + } elsif (/([a-zA-Z0-9_][^(]*)\(/) { + # Discard template and function parameters. + $fn = $1; + 1 while ($fn =~ s/<[^<>]*>//); + $fn =~ s/[ \t]*$//; + } + if ($fn && $seen_names{$fn} == 0) { + # If this is the first function in the file, we display it next + # to the filename, so we need an extra space before the opening + # brace. + if ($bof) { + print CLFILE " "; + $bof = 0; + } else { + print CLFILE "\t"; + } + + print CLFILE "($fn):\n"; + $seen_names{$fn} = 1; + } + } +} + +# If we have not seen any function names (ie, $bof == 1), we just +# write out a ':'. This happens when there is only one file with no +# functions. +if ($bof == 1) { + print CLFILE ":\n"; +} + +print CLFILE "\n"; +close (DFILE); + +# Concatenate the ChangeLog template and the original .diff file. +system ("cat $diff >>$cl && mv $cl $diff") == 0 + or die "Could not add the ChangeLog entry to $diff"; + +exit 0; diff --git a/gcc-4.8.3/contrib/paranoia.cc b/gcc-4.8.3/contrib/paranoia.cc new file mode 100644 index 000000000..8e8500e23 --- /dev/null +++ b/gcc-4.8.3/contrib/paranoia.cc @@ -0,0 +1,2713 @@ +/* A C version of Kahan's Floating Point Test "Paranoia" + +Thos Sumner, UCSF, Feb. 1985 +David Gay, BTL, Jan. 1986 + +This is a rewrite from the Pascal version by + +B. A. Wichmann, 18 Jan. 1985 + +(and does NOT exhibit good C programming style). + +Adjusted to use Standard C headers 19 Jan. 1992 (dmg); + +(C) Apr 19 1983 in BASIC version by: +Professor W. M. Kahan, +567 Evans Hall +Electrical Engineering & Computer Science Dept. +University of California +Berkeley, California 94720 +USA + +converted to Pascal by: +B. A. Wichmann +National Physical Laboratory +Teddington Middx +TW11 OLW +UK + +converted to C by: + +David M. Gay and Thos Sumner +AT&T Bell Labs Computer Center, Rm. U-76 +600 Mountain Avenue University of California +Murray Hill, NJ 07974 San Francisco, CA 94143 +USA USA + +with simultaneous corrections to the Pascal source (reflected +in the Pascal source available over netlib). +[A couple of bug fixes from dgh = sun!dhough incorporated 31 July 1986.] + +Reports of results on various systems from all the versions +of Paranoia are being collected by Richard Karpinski at the +same address as Thos Sumner. This includes sample outputs, +bug reports, and criticisms. + +You may copy this program freely if you acknowledge its source. +Comments on the Pascal version to NPL, please. + +The following is from the introductory commentary from Wichmann's work: + +The BASIC program of Kahan is written in Microsoft BASIC using many +facilities which have no exact analogy in Pascal. The Pascal +version below cannot therefore be exactly the same. Rather than be +a minimal transcription of the BASIC program, the Pascal coding +follows the conventional style of block-structured languages. Hence +the Pascal version could be useful in producing versions in other +structured languages. + +Rather than use identifiers of minimal length (which therefore have +little mnemonic significance), the Pascal version uses meaningful +identifiers as follows [Note: A few changes have been made for C]: + + +BASIC C BASIC C BASIC C + +A J S StickyBit +A1 AInverse J0 NoErrors T +B Radix [Failure] T0 Underflow +B1 BInverse J1 NoErrors T2 ThirtyTwo +B2 RadixD2 [SeriousDefect] T5 OneAndHalf +B9 BMinusU2 J2 NoErrors T7 TwentySeven +C [Defect] T8 TwoForty +C1 CInverse J3 NoErrors U OneUlp +D [Flaw] U0 UnderflowThreshold +D4 FourD K PageNo U1 +E0 L Milestone U2 +E1 M V +E2 Exp2 N V0 +E3 N1 V8 +E5 MinSqEr O Zero V9 +E6 SqEr O1 One W +E7 MaxSqEr O2 Two X +E8 O3 Three X1 +E9 O4 Four X8 +F1 MinusOne O5 Five X9 Random1 +F2 Half O8 Eight Y +F3 Third O9 Nine Y1 +F6 P Precision Y2 +F9 Q Y9 Random2 +G1 GMult Q8 Z +G2 GDiv Q9 Z0 PseudoZero +G3 GAddSub R Z1 +H R1 RMult Z2 +H1 HInverse R2 RDiv Z9 +I R3 RAddSub +IO NoTrials R4 RSqrt +I3 IEEE R9 Random9 + +SqRWrng + +All the variables in BASIC are true variables and in consequence, +the program is more difficult to follow since the "constants" must +be determined (the glossary is very helpful). The Pascal version +uses Real constants, but checks are added to ensure that the values +are correctly converted by the compiler. + +The major textual change to the Pascal version apart from the +identifiersis that named procedures are used, inserting parameters +wherehelpful. New procedures are also introduced. The +correspondence is as follows: + + +BASIC Pascal +lines + +90- 140 Pause +170- 250 Instructions +380- 460 Heading +480- 670 Characteristics +690- 870 History +2940-2950 Random +3710-3740 NewD +4040-4080 DoesYequalX +4090-4110 PrintIfNPositive +4640-4850 TestPartialUnderflow + +*/ + + /* This version of paranoia has been modified to work with GCC's internal + software floating point emulation library, as a sanity check of same. + + I'm doing this in C++ so that I can do operator overloading and not + have to modify so damned much of the existing code. */ + + extern "C" { +#include <stdio.h> +#include <stddef.h> +#include <limits.h> +#include <string.h> +#include <stdlib.h> +#include <math.h> +#include <unistd.h> +#include <float.h> + + /* This part is made all the more awful because many gcc headers are + not prepared at all to be parsed as C++. The biggest stickler + here is const structure members. So we include exactly the pieces + that we need. */ + +#define GTY(x) + +#include "ansidecl.h" +#include "auto-host.h" +#include "hwint.h" + +#undef EXTRA_MODES_FILE + + struct rtx_def; + typedef struct rtx_def *rtx; + struct rtvec_def; + typedef struct rtvec_def *rtvec; + union tree_node; + typedef union tree_node *tree; + +#define DEFTREECODE(SYM, STRING, TYPE, NARGS) SYM, + enum tree_code { +#include "tree.def" + LAST_AND_UNUSED_TREE_CODE + }; +#undef DEFTREECODE + +#define class klass + +#include "real.h" + +#undef class + } + +/* We never produce signals from the library. Thus setjmp need do nothing. */ +#undef setjmp +#define setjmp(x) (0) + +static bool verbose = false; +static int verbose_index = 0; + +/* ====================================================================== */ +/* The implementation of the abstract floating point class based on gcc's + real.c. I.e. the object of this exercise. Templated so that we can + all fp sizes. */ + +class real_c_float +{ + public: + static const enum machine_mode MODE = SFmode; + + private: + static const int external_max = 128 / 32; + static const int internal_max + = (sizeof (REAL_VALUE_TYPE) + sizeof (long) + 1) / sizeof (long); + long image[external_max < internal_max ? internal_max : external_max]; + + void from_long(long); + void from_str(const char *); + void binop(int code, const real_c_float&); + void unop(int code); + bool cmp(int code, const real_c_float&) const; + + public: + real_c_float() + { } + real_c_float(long l) + { from_long(l); } + real_c_float(const char *s) + { from_str(s); } + real_c_float(const real_c_float &b) + { memcpy(image, b.image, sizeof(image)); } + + const real_c_float& operator= (long l) + { from_long(l); return *this; } + const real_c_float& operator= (const char *s) + { from_str(s); return *this; } + const real_c_float& operator= (const real_c_float &b) + { memcpy(image, b.image, sizeof(image)); return *this; } + + const real_c_float& operator+= (const real_c_float &b) + { binop(PLUS_EXPR, b); return *this; } + const real_c_float& operator-= (const real_c_float &b) + { binop(MINUS_EXPR, b); return *this; } + const real_c_float& operator*= (const real_c_float &b) + { binop(MULT_EXPR, b); return *this; } + const real_c_float& operator/= (const real_c_float &b) + { binop(RDIV_EXPR, b); return *this; } + + real_c_float operator- () const + { real_c_float r(*this); r.unop(NEGATE_EXPR); return r; } + real_c_float abs () const + { real_c_float r(*this); r.unop(ABS_EXPR); return r; } + + bool operator < (const real_c_float &b) const { return cmp(LT_EXPR, b); } + bool operator <= (const real_c_float &b) const { return cmp(LE_EXPR, b); } + bool operator == (const real_c_float &b) const { return cmp(EQ_EXPR, b); } + bool operator != (const real_c_float &b) const { return cmp(NE_EXPR, b); } + bool operator >= (const real_c_float &b) const { return cmp(GE_EXPR, b); } + bool operator > (const real_c_float &b) const { return cmp(GT_EXPR, b); } + + const char * str () const; + const char * hex () const; + long integer () const; + int exp () const; + void ldexp (int); +}; + +void +real_c_float::from_long (long l) +{ + REAL_VALUE_TYPE f; + + real_from_integer (&f, MODE, l, l < 0 ? -1 : 0, 0); + real_to_target (image, &f, MODE); +} + +void +real_c_float::from_str (const char *s) +{ + REAL_VALUE_TYPE f; + const char *p = s; + + if (*p == '-' || *p == '+') + p++; + if (strcasecmp(p, "inf") == 0) + { + real_inf (&f); + if (*s == '-') + real_arithmetic (&f, NEGATE_EXPR, &f, NULL); + } + else if (strcasecmp(p, "nan") == 0) + real_nan (&f, "", 1, MODE); + else + real_from_string (&f, s); + + real_to_target (image, &f, MODE); +} + +void +real_c_float::binop (int code, const real_c_float &b) +{ + REAL_VALUE_TYPE ai, bi, ri; + + real_from_target (&ai, image, MODE); + real_from_target (&bi, b.image, MODE); + real_arithmetic (&ri, code, &ai, &bi); + real_to_target (image, &ri, MODE); + + if (verbose) + { + char ab[64], bb[64], rb[64]; + const real_format *fmt = real_format_for_mode[MODE - QFmode]; + const int digits = (fmt->p * fmt->log2_b + 3) / 4; + char symbol_for_code; + + real_from_target (&ri, image, MODE); + real_to_hexadecimal (ab, &ai, sizeof(ab), digits, 0); + real_to_hexadecimal (bb, &bi, sizeof(bb), digits, 0); + real_to_hexadecimal (rb, &ri, sizeof(rb), digits, 0); + + switch (code) + { + case PLUS_EXPR: + symbol_for_code = '+'; + break; + case MINUS_EXPR: + symbol_for_code = '-'; + break; + case MULT_EXPR: + symbol_for_code = '*'; + break; + case RDIV_EXPR: + symbol_for_code = '/'; + break; + default: + abort (); + } + + fprintf (stderr, "%6d: %s %c %s = %s\n", verbose_index++, + ab, symbol_for_code, bb, rb); + } +} + +void +real_c_float::unop (int code) +{ + REAL_VALUE_TYPE ai, ri; + + real_from_target (&ai, image, MODE); + real_arithmetic (&ri, code, &ai, NULL); + real_to_target (image, &ri, MODE); + + if (verbose) + { + char ab[64], rb[64]; + const real_format *fmt = real_format_for_mode[MODE - QFmode]; + const int digits = (fmt->p * fmt->log2_b + 3) / 4; + const char *symbol_for_code; + + real_from_target (&ri, image, MODE); + real_to_hexadecimal (ab, &ai, sizeof(ab), digits, 0); + real_to_hexadecimal (rb, &ri, sizeof(rb), digits, 0); + + switch (code) + { + case NEGATE_EXPR: + symbol_for_code = "-"; + break; + case ABS_EXPR: + symbol_for_code = "abs "; + break; + default: + abort (); + } + + fprintf (stderr, "%6d: %s%s = %s\n", verbose_index++, + symbol_for_code, ab, rb); + } +} + +bool +real_c_float::cmp (int code, const real_c_float &b) const +{ + REAL_VALUE_TYPE ai, bi; + bool ret; + + real_from_target (&ai, image, MODE); + real_from_target (&bi, b.image, MODE); + ret = real_compare (code, &ai, &bi); + + if (verbose) + { + char ab[64], bb[64]; + const real_format *fmt = real_format_for_mode[MODE - QFmode]; + const int digits = (fmt->p * fmt->log2_b + 3) / 4; + const char *symbol_for_code; + + real_to_hexadecimal (ab, &ai, sizeof(ab), digits, 0); + real_to_hexadecimal (bb, &bi, sizeof(bb), digits, 0); + + switch (code) + { + case LT_EXPR: + symbol_for_code = "<"; + break; + case LE_EXPR: + symbol_for_code = "<="; + break; + case EQ_EXPR: + symbol_for_code = "=="; + break; + case NE_EXPR: + symbol_for_code = "!="; + break; + case GE_EXPR: + symbol_for_code = ">="; + break; + case GT_EXPR: + symbol_for_code = ">"; + break; + default: + abort (); + } + + fprintf (stderr, "%6d: %s %s %s = %s\n", verbose_index++, + ab, symbol_for_code, bb, (ret ? "true" : "false")); + } + + return ret; +} + +const char * +real_c_float::str() const +{ + REAL_VALUE_TYPE f; + const real_format *fmt = real_format_for_mode[MODE - QFmode]; + const int digits = int(fmt->p * fmt->log2_b * .30102999566398119521 + 1); + + real_from_target (&f, image, MODE); + char *buf = new char[digits + 10]; + real_to_decimal (buf, &f, digits+10, digits, 0); + + return buf; +} + +const char * +real_c_float::hex() const +{ + REAL_VALUE_TYPE f; + const real_format *fmt = real_format_for_mode[MODE - QFmode]; + const int digits = (fmt->p * fmt->log2_b + 3) / 4; + + real_from_target (&f, image, MODE); + char *buf = new char[digits + 10]; + real_to_hexadecimal (buf, &f, digits+10, digits, 0); + + return buf; +} + +long +real_c_float::integer() const +{ + REAL_VALUE_TYPE f; + real_from_target (&f, image, MODE); + return real_to_integer (&f); +} + +int +real_c_float::exp() const +{ + REAL_VALUE_TYPE f; + real_from_target (&f, image, MODE); + return real_exponent (&f); +} + +void +real_c_float::ldexp (int exp) +{ + REAL_VALUE_TYPE ai; + + real_from_target (&ai, image, MODE); + real_ldexp (&ai, &ai, exp); + real_to_target (image, &ai, MODE); +} + +/* ====================================================================== */ +/* An implementation of the abstract floating point class that uses native + arithmetic. Exists for reference and debugging. */ + +template<typename T> +class native_float +{ + private: + // Force intermediate results back to memory. + volatile T image; + + static T from_str (const char *); + static T do_abs (T); + static T verbose_binop (T, char, T, T); + static T verbose_unop (const char *, T, T); + static bool verbose_cmp (T, const char *, T, bool); + + public: + native_float() + { } + native_float(long l) + { image = l; } + native_float(const char *s) + { image = from_str(s); } + native_float(const native_float &b) + { image = b.image; } + + const native_float& operator= (long l) + { image = l; return *this; } + const native_float& operator= (const char *s) + { image = from_str(s); return *this; } + const native_float& operator= (const native_float &b) + { image = b.image; return *this; } + + const native_float& operator+= (const native_float &b) + { + image = verbose_binop(image, '+', b.image, image + b.image); + return *this; + } + const native_float& operator-= (const native_float &b) + { + image = verbose_binop(image, '-', b.image, image - b.image); + return *this; + } + const native_float& operator*= (const native_float &b) + { + image = verbose_binop(image, '*', b.image, image * b.image); + return *this; + } + const native_float& operator/= (const native_float &b) + { + image = verbose_binop(image, '/', b.image, image / b.image); + return *this; + } + + native_float operator- () const + { + native_float r; + r.image = verbose_unop("-", image, -image); + return r; + } + native_float abs () const + { + native_float r; + r.image = verbose_unop("abs ", image, do_abs(image)); + return r; + } + + bool operator < (const native_float &b) const + { return verbose_cmp(image, "<", b.image, image < b.image); } + bool operator <= (const native_float &b) const + { return verbose_cmp(image, "<=", b.image, image <= b.image); } + bool operator == (const native_float &b) const + { return verbose_cmp(image, "==", b.image, image == b.image); } + bool operator != (const native_float &b) const + { return verbose_cmp(image, "!=", b.image, image != b.image); } + bool operator >= (const native_float &b) const + { return verbose_cmp(image, ">=", b.image, image >= b.image); } + bool operator > (const native_float &b) const + { return verbose_cmp(image, ">", b.image, image > b.image); } + + const char * str () const; + const char * hex () const; + long integer () const + { return long(image); } + int exp () const; + void ldexp (int); +}; + +template<typename T> +inline T +native_float<T>::from_str (const char *s) +{ + return strtold (s, NULL); +} + +template<> +inline float +native_float<float>::from_str (const char *s) +{ + return strtof (s, NULL); +} + +template<> +inline double +native_float<double>::from_str (const char *s) +{ + return strtod (s, NULL); +} + +template<typename T> +inline T +native_float<T>::do_abs (T image) +{ + return fabsl (image); +} + +template<> +inline float +native_float<float>::do_abs (float image) +{ + return fabsf (image); +} + +template<> +inline double +native_float<double>::do_abs (double image) +{ + return fabs (image); +} + +template<typename T> +T +native_float<T>::verbose_binop (T a, char symbol, T b, T r) +{ + if (verbose) + { + const int digits = int(sizeof(T) * CHAR_BIT / 4) - 1; +#ifdef NO_LONG_DOUBLE + fprintf (stderr, "%6d: %.*a %c %.*a = %.*a\n", verbose_index++, + digits, (double)a, symbol, + digits, (double)b, digits, (double)r); +#else + fprintf (stderr, "%6d: %.*La %c %.*La = %.*La\n", verbose_index++, + digits, (long double)a, symbol, + digits, (long double)b, digits, (long double)r); +#endif + } + return r; +} + +template<typename T> +T +native_float<T>::verbose_unop (const char *symbol, T a, T r) +{ + if (verbose) + { + const int digits = int(sizeof(T) * CHAR_BIT / 4) - 1; +#ifdef NO_LONG_DOUBLE + fprintf (stderr, "%6d: %s%.*a = %.*a\n", verbose_index++, + symbol, digits, (double)a, digits, (double)r); +#else + fprintf (stderr, "%6d: %s%.*La = %.*La\n", verbose_index++, + symbol, digits, (long double)a, digits, (long double)r); +#endif + } + return r; +} + +template<typename T> +bool +native_float<T>::verbose_cmp (T a, const char *symbol, T b, bool r) +{ + if (verbose) + { + const int digits = int(sizeof(T) * CHAR_BIT / 4) - 1; +#ifndef NO_LONG_DOUBLE + fprintf (stderr, "%6d: %.*a %s %.*a = %s\n", verbose_index++, + digits, (double)a, symbol, + digits, (double)b, (r ? "true" : "false")); +#else + fprintf (stderr, "%6d: %.*La %s %.*La = %s\n", verbose_index++, + digits, (long double)a, symbol, + digits, (long double)b, (r ? "true" : "false")); +#endif + } + return r; +} + +template<typename T> +const char * +native_float<T>::str() const +{ + char *buf = new char[50]; + const int digits = int(sizeof(T) * CHAR_BIT * .30102999566398119521 + 1); +#ifndef NO_LONG_DOUBLE + sprintf (buf, "%.*e", digits - 1, (double) image); +#else + sprintf (buf, "%.*Le", digits - 1, (long double) image); +#endif + return buf; +} + +template<typename T> +const char * +native_float<T>::hex() const +{ + char *buf = new char[50]; + const int digits = int(sizeof(T) * CHAR_BIT / 4); +#ifndef NO_LONG_DOUBLE + sprintf (buf, "%.*a", digits - 1, (double) image); +#else + sprintf (buf, "%.*La", digits - 1, (long double) image); +#endif + return buf; +} + +template<typename T> +int +native_float<T>::exp() const +{ + int e; + frexp (image, &e); + return e; +} + +template<typename T> +void +native_float<T>::ldexp (int exp) +{ + image = ldexpl (image, exp); +} + +template<> +void +native_float<float>::ldexp (int exp) +{ + image = ldexpf (image, exp); +} + +template<> +void +native_float<double>::ldexp (int exp) +{ + image = ::ldexp (image, exp); +} + +/* ====================================================================== */ +/* Some libm routines that Paranoia expects to be available. */ + +template<typename FLOAT> +inline FLOAT +FABS (const FLOAT &f) +{ + return f.abs(); +} + +template<typename FLOAT, typename RHS> +inline FLOAT +operator+ (const FLOAT &a, const RHS &b) +{ + return FLOAT(a) += FLOAT(b); +} + +template<typename FLOAT, typename RHS> +inline FLOAT +operator- (const FLOAT &a, const RHS &b) +{ + return FLOAT(a) -= FLOAT(b); +} + +template<typename FLOAT, typename RHS> +inline FLOAT +operator* (const FLOAT &a, const RHS &b) +{ + return FLOAT(a) *= FLOAT(b); +} + +template<typename FLOAT, typename RHS> +inline FLOAT +operator/ (const FLOAT &a, const RHS &b) +{ + return FLOAT(a) /= FLOAT(b); +} + +template<typename FLOAT> +FLOAT +FLOOR (const FLOAT &f) +{ + /* ??? This is only correct when F is representable as an integer. */ + long i = f.integer(); + FLOAT r; + + r = i; + if (i < 0 && f != r) + r = i - 1; + + return r; +} + +template<typename FLOAT> +FLOAT +SQRT (const FLOAT &f) +{ +#if 0 + FLOAT zero = long(0); + FLOAT two = 2; + FLOAT one = 1; + FLOAT diff, diff2; + FLOAT z, t; + + if (f == zero) + return zero; + if (f < zero) + return zero / zero; + if (f == one) + return f; + + z = f; + z.ldexp (-f.exp() / 2); + + diff2 = FABS (z * z - f); + if (diff2 > zero) + while (1) + { + t = (f / (two * z)) + (z / two); + diff = FABS (t * t - f); + if (diff >= diff2) + break; + z = t; + diff2 = diff; + } + + return z; +#elif defined(NO_LONG_DOUBLE) + double d; + char buf[64]; + + d = strtod (f.hex(), NULL); + d = sqrt (d); + sprintf(buf, "%.35a", d); + + return FLOAT(buf); +#else + long double ld; + char buf[64]; + + ld = strtold (f.hex(), NULL); + ld = sqrtl (ld); + sprintf(buf, "%.35La", ld); + + return FLOAT(buf); +#endif +} + +template<typename FLOAT> +FLOAT +LOG (FLOAT x) +{ +#if 0 + FLOAT zero = long(0); + FLOAT one = 1; + + if (x <= zero) + return zero / zero; + if (x == one) + return zero; + + int exp = x.exp() - 1; + x.ldexp(-exp); + + FLOAT xm1 = x - one; + FLOAT y = xm1; + long n = 2; + + FLOAT sum = xm1; + while (1) + { + y *= xm1; + FLOAT term = y / FLOAT (n); + FLOAT next = sum + term; + if (next == sum) + break; + sum = next; + if (++n == 1000) + break; + } + + if (exp) + sum += FLOAT (exp) * FLOAT(".69314718055994530941"); + + return sum; +#elif defined (NO_LONG_DOUBLE) + double d; + char buf[64]; + + d = strtod (x.hex(), NULL); + d = log (d); + sprintf(buf, "%.35a", d); + + return FLOAT(buf); +#else + long double ld; + char buf[64]; + + ld = strtold (x.hex(), NULL); + ld = logl (ld); + sprintf(buf, "%.35La", ld); + + return FLOAT(buf); +#endif +} + +template<typename FLOAT> +FLOAT +EXP (const FLOAT &x) +{ + /* Cheat. */ +#ifdef NO_LONG_DOUBLE + double d; + char buf[64]; + + d = strtod (x.hex(), NULL); + d = exp (d); + sprintf(buf, "%.35a", d); + + return FLOAT(buf); +#else + long double ld; + char buf[64]; + + ld = strtold (x.hex(), NULL); + ld = expl (ld); + sprintf(buf, "%.35La", ld); + + return FLOAT(buf); +#endif +} + +template<typename FLOAT> +FLOAT +POW (const FLOAT &base, const FLOAT &exp) +{ + /* Cheat. */ +#ifdef NO_LONG_DOUBLE + double d1, d2; + char buf[64]; + + d1 = strtod (base.hex(), NULL); + d2 = strtod (exp.hex(), NULL); + d1 = pow (d1, d2); + sprintf(buf, "%.35a", d1); + + return FLOAT(buf); +#else + long double ld1, ld2; + char buf[64]; + + ld1 = strtold (base.hex(), NULL); + ld2 = strtold (exp.hex(), NULL); + ld1 = powl (ld1, ld2); + sprintf(buf, "%.35La", ld1); + + return FLOAT(buf); +#endif +} + +/* ====================================================================== */ +/* Real Paranoia begins again here. We wrap the thing in a template so + that we can instantiate it for each floating point type we care for. */ + +int NoTrials = 20; /*Number of tests for commutativity. */ +bool do_pause = false; + +enum Guard { No, Yes }; +enum Rounding { Other, Rounded, Chopped }; +enum Class { Failure, Serious, Defect, Flaw }; + +template<typename FLOAT> +struct Paranoia +{ + FLOAT Radix, BInvrse, RadixD2, BMinusU2; + + /* Small floating point constants. */ + FLOAT Zero; + FLOAT Half; + FLOAT One; + FLOAT Two; + FLOAT Three; + FLOAT Four; + FLOAT Five; + FLOAT Eight; + FLOAT Nine; + FLOAT TwentySeven; + FLOAT ThirtyTwo; + FLOAT TwoForty; + FLOAT MinusOne; + FLOAT OneAndHalf; + + /* Declarations of Variables. */ + int Indx; + char ch[8]; + FLOAT AInvrse, A1; + FLOAT C, CInvrse; + FLOAT D, FourD; + FLOAT E0, E1, Exp2, E3, MinSqEr; + FLOAT SqEr, MaxSqEr, E9; + FLOAT Third; + FLOAT F6, F9; + FLOAT H, HInvrse; + int I; + FLOAT StickyBit, J; + FLOAT MyZero; + FLOAT Precision; + FLOAT Q, Q9; + FLOAT R, Random9; + FLOAT T, Underflow, S; + FLOAT OneUlp, UfThold, U1, U2; + FLOAT V, V0, V9; + FLOAT W; + FLOAT X, X1, X2, X8, Random1; + FLOAT Y, Y1, Y2, Random2; + FLOAT Z, PseudoZero, Z1, Z2, Z9; + int ErrCnt[4]; + int Milestone; + int PageNo; + int M, N, N1; + Guard GMult, GDiv, GAddSub; + Rounding RMult, RDiv, RAddSub, RSqrt; + int Break, Done, NotMonot, Monot, Anomaly, IEEE, SqRWrng, UfNGrad; + + /* Computed constants. */ + /*U1 gap below 1.0, i.e, 1.0-U1 is next number below 1.0 */ + /*U2 gap above 1.0, i.e, 1.0+U2 is next number above 1.0 */ + + int main (); + + FLOAT Sign (FLOAT); + FLOAT Random (); + void Pause (); + void BadCond (int, const char *); + void SqXMinX (int); + void TstCond (int, int, const char *); + void notify (const char *); + void IsYeqX (); + void NewD (); + void PrintIfNPositive (); + void SR3750 (); + void TstPtUf (); + + // Pretend we're bss. + Paranoia() { memset(this, 0, sizeof (*this)); } +}; + +template<typename FLOAT> +int +Paranoia<FLOAT>::main() +{ + /* First two assignments use integer right-hand sides. */ + Zero = long(0); + One = long(1); + Two = long(2); + Three = long(3); + Four = long(4); + Five = long(5); + Eight = long(8); + Nine = long(9); + TwentySeven = long(27); + ThirtyTwo = long(32); + TwoForty = long(240); + MinusOne = long(-1); + Half = "0x1p-1"; + OneAndHalf = "0x3p-1"; + ErrCnt[Failure] = 0; + ErrCnt[Serious] = 0; + ErrCnt[Defect] = 0; + ErrCnt[Flaw] = 0; + PageNo = 1; + /*=============================================*/ + Milestone = 7; + /*=============================================*/ + printf ("Program is now RUNNING tests on small integers:\n"); + + TstCond (Failure, (Zero + Zero == Zero), "0+0 != 0"); + TstCond (Failure, (One - One == Zero), "1-1 != 0"); + TstCond (Failure, (One > Zero), "1 <= 0"); + TstCond (Failure, (One + One == Two), "1+1 != 2"); + + Z = -Zero; + if (Z != Zero) + { + ErrCnt[Failure] = ErrCnt[Failure] + 1; + printf ("Comparison alleges that -0.0 is Non-zero!\n"); + U2 = "0.001"; + Radix = 1; + TstPtUf (); + } + + TstCond (Failure, (Three == Two + One), "3 != 2+1"); + TstCond (Failure, (Four == Three + One), "4 != 3+1"); + TstCond (Failure, (Four + Two * (-Two) == Zero), "4 + 2*(-2) != 0"); + TstCond (Failure, (Four - Three - One == Zero), "4-3-1 != 0"); + + TstCond (Failure, (MinusOne == (Zero - One)), "-1 != 0-1"); + TstCond (Failure, (MinusOne + One == Zero), "-1+1 != 0"); + TstCond (Failure, (One + MinusOne == Zero), "1+(-1) != 0"); + TstCond (Failure, (MinusOne + FABS (One) == Zero), "-1+abs(1) != 0"); + TstCond (Failure, (MinusOne + MinusOne * MinusOne == Zero), + "-1+(-1)*(-1) != 0"); + + TstCond (Failure, Half + MinusOne + Half == Zero, "1/2 + (-1) + 1/2 != 0"); + + /*=============================================*/ + Milestone = 10; + /*=============================================*/ + + TstCond (Failure, (Nine == Three * Three), "9 != 3*3"); + TstCond (Failure, (TwentySeven == Nine * Three), "27 != 9*3"); + TstCond (Failure, (Eight == Four + Four), "8 != 4+4"); + TstCond (Failure, (ThirtyTwo == Eight * Four), "32 != 8*4"); + TstCond (Failure, (ThirtyTwo - TwentySeven - Four - One == Zero), + "32-27-4-1 != 0"); + + TstCond (Failure, Five == Four + One, "5 != 4+1"); + TstCond (Failure, TwoForty == Four * Five * Three * Four, "240 != 4*5*3*4"); + TstCond (Failure, TwoForty / Three - Four * Four * Five == Zero, + "240/3 - 4*4*5 != 0"); + TstCond (Failure, TwoForty / Four - Five * Three * Four == Zero, + "240/4 - 5*3*4 != 0"); + TstCond (Failure, TwoForty / Five - Four * Three * Four == Zero, + "240/5 - 4*3*4 != 0"); + + if (ErrCnt[Failure] == 0) + { + printf ("-1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 are O.K.\n"); + printf ("\n"); + } + printf ("Searching for Radix and Precision.\n"); + W = One; + do + { + W = W + W; + Y = W + One; + Z = Y - W; + Y = Z - One; + } + while (MinusOne + FABS (Y) < Zero); + /*.. now W is just big enough that |((W+1)-W)-1| >= 1 ... */ + Precision = Zero; + Y = One; + do + { + Radix = W + Y; + Y = Y + Y; + Radix = Radix - W; + } + while (Radix == Zero); + if (Radix < Two) + Radix = One; + printf ("Radix = %s .\n", Radix.str()); + if (Radix != One) + { + W = One; + do + { + Precision = Precision + One; + W = W * Radix; + Y = W + One; + } + while ((Y - W) == One); + } + /*... now W == Radix^Precision is barely too big to satisfy (W+1)-W == 1 + ... */ + U1 = One / W; + U2 = Radix * U1; + printf ("Closest relative separation found is U1 = %s .\n\n", U1.str()); + printf ("Recalculating radix and precision\n "); + + /*save old values */ + E0 = Radix; + E1 = U1; + E9 = U2; + E3 = Precision; + + X = Four / Three; + Third = X - One; + F6 = Half - Third; + X = F6 + F6; + X = FABS (X - Third); + if (X < U2) + X = U2; + + /*... now X = (unknown no.) ulps of 1+... */ + do + { + U2 = X; + Y = Half * U2 + ThirtyTwo * U2 * U2; + Y = One + Y; + X = Y - One; + } + while (!((U2 <= X) || (X <= Zero))); + + /*... now U2 == 1 ulp of 1 + ... */ + X = Two / Three; + F6 = X - Half; + Third = F6 + F6; + X = Third - Half; + X = FABS (X + F6); + if (X < U1) + X = U1; + + /*... now X == (unknown no.) ulps of 1 -... */ + do + { + U1 = X; + Y = Half * U1 + ThirtyTwo * U1 * U1; + Y = Half - Y; + X = Half + Y; + Y = Half - X; + X = Half + Y; + } + while (!((U1 <= X) || (X <= Zero))); + /*... now U1 == 1 ulp of 1 - ... */ + if (U1 == E1) + printf ("confirms closest relative separation U1 .\n"); + else + printf ("gets better closest relative separation U1 = %s .\n", U1.str()); + W = One / U1; + F9 = (Half - U1) + Half; + + Radix = FLOOR (FLOAT ("0.01") + U2 / U1); + if (Radix == E0) + printf ("Radix confirmed.\n"); + else + printf ("MYSTERY: recalculated Radix = %s .\n", Radix.str()); + TstCond (Defect, Radix <= Eight + Eight, + "Radix is too big: roundoff problems"); + TstCond (Flaw, (Radix == Two) || (Radix == 10) + || (Radix == One), "Radix is not as good as 2 or 10"); + /*=============================================*/ + Milestone = 20; + /*=============================================*/ + TstCond (Failure, F9 - Half < Half, + "(1-U1)-1/2 < 1/2 is FALSE, prog. fails?"); + X = F9; + I = 1; + Y = X - Half; + Z = Y - Half; + TstCond (Failure, (X != One) + || (Z == Zero), "Comparison is fuzzy,X=1 but X-1/2-1/2 != 0"); + X = One + U2; + I = 0; + /*=============================================*/ + Milestone = 25; + /*=============================================*/ + /*... BMinusU2 = nextafter(Radix, 0) */ + BMinusU2 = Radix - One; + BMinusU2 = (BMinusU2 - U2) + One; + /* Purify Integers */ + if (Radix != One) + { + X = -TwoForty * LOG (U1) / LOG (Radix); + Y = FLOOR (Half + X); + if (FABS (X - Y) * Four < One) + X = Y; + Precision = X / TwoForty; + Y = FLOOR (Half + Precision); + if (FABS (Precision - Y) * TwoForty < Half) + Precision = Y; + } + if ((Precision != FLOOR (Precision)) || (Radix == One)) + { + printf ("Precision cannot be characterized by an Integer number\n"); + printf + ("of significant digits but, by itself, this is a minor flaw.\n"); + } + if (Radix == One) + printf + ("logarithmic encoding has precision characterized solely by U1.\n"); + else + printf ("The number of significant digits of the Radix is %s .\n", + Precision.str()); + TstCond (Serious, U2 * Nine * Nine * TwoForty < One, + "Precision worse than 5 decimal figures "); + /*=============================================*/ + Milestone = 30; + /*=============================================*/ + /* Test for extra-precise subexpressions */ + X = FABS (((Four / Three - One) - One / Four) * Three - One / Four); + do + { + Z2 = X; + X = (One + (Half * Z2 + ThirtyTwo * Z2 * Z2)) - One; + } + while (!((Z2 <= X) || (X <= Zero))); + X = Y = Z = FABS ((Three / Four - Two / Three) * Three - One / Four); + do + { + Z1 = Z; + Z = (One / Two - ((One / Two - (Half * Z1 + ThirtyTwo * Z1 * Z1)) + + One / Two)) + One / Two; + } + while (!((Z1 <= Z) || (Z <= Zero))); + do + { + do + { + Y1 = Y; + Y = + (Half - ((Half - (Half * Y1 + ThirtyTwo * Y1 * Y1)) + Half)) + + Half; + } + while (!((Y1 <= Y) || (Y <= Zero))); + X1 = X; + X = ((Half * X1 + ThirtyTwo * X1 * X1) - F9) + F9; + } + while (!((X1 <= X) || (X <= Zero))); + if ((X1 != Y1) || (X1 != Z1)) + { + BadCond (Serious, "Disagreements among the values X1, Y1, Z1,\n"); + printf ("respectively %s, %s, %s,\n", X1.str(), Y1.str(), Z1.str()); + printf ("are symptoms of inconsistencies introduced\n"); + printf ("by extra-precise evaluation of arithmetic subexpressions.\n"); + notify ("Possibly some part of this"); + if ((X1 == U1) || (Y1 == U1) || (Z1 == U1)) + printf ("That feature is not tested further by this program.\n"); + } + else + { + if ((Z1 != U1) || (Z2 != U2)) + { + if ((Z1 >= U1) || (Z2 >= U2)) + { + BadCond (Failure, ""); + notify ("Precision"); + printf ("\tU1 = %s, Z1 - U1 = %s\n", U1.str(), (Z1 - U1).str()); + printf ("\tU2 = %s, Z2 - U2 = %s\n", U2.str(), (Z2 - U2).str()); + } + else + { + if ((Z1 <= Zero) || (Z2 <= Zero)) + { + printf ("Because of unusual Radix = %s", Radix.str()); + printf (", or exact rational arithmetic a result\n"); + printf ("Z1 = %s, or Z2 = %s ", Z1.str(), Z2.str()); + notify ("of an\nextra-precision"); + } + if (Z1 != Z2 || Z1 > Zero) + { + X = Z1 / U1; + Y = Z2 / U2; + if (Y > X) + X = Y; + Q = -LOG (X); + printf ("Some subexpressions appear to be calculated " + "extra precisely\n"); + printf ("with about %s extra B-digits, i.e.\n", + (Q / LOG (Radix)).str()); + printf ("roughly %s extra significant decimals.\n", + (Q / LOG (FLOAT (10))).str()); + } + printf + ("That feature is not tested further by this program.\n"); + } + } + } + Pause (); + /*=============================================*/ + Milestone = 35; + /*=============================================*/ + if (Radix >= Two) + { + X = W / (Radix * Radix); + Y = X + One; + Z = Y - X; + T = Z + U2; + X = T - Z; + TstCond (Failure, X == U2, + "Subtraction is not normalized X=Y,X+Z != Y+Z!"); + if (X == U2) + printf ("Subtraction appears to be normalized, as it should be."); + } + printf ("\nChecking for guard digit in *, /, and -.\n"); + Y = F9 * One; + Z = One * F9; + X = F9 - Half; + Y = (Y - Half) - X; + Z = (Z - Half) - X; + X = One + U2; + T = X * Radix; + R = Radix * X; + X = T - Radix; + X = X - Radix * U2; + T = R - Radix; + T = T - Radix * U2; + X = X * (Radix - One); + T = T * (Radix - One); + if ((X == Zero) && (Y == Zero) && (Z == Zero) && (T == Zero)) + GMult = Yes; + else + { + GMult = No; + TstCond (Serious, false, "* lacks a Guard Digit, so 1*X != X"); + } + Z = Radix * U2; + X = One + Z; + Y = FABS ((X + Z) - X * X) - U2; + X = One - U2; + Z = FABS ((X - U2) - X * X) - U1; + TstCond (Failure, (Y <= Zero) + && (Z <= Zero), "* gets too many final digits wrong.\n"); + Y = One - U2; + X = One + U2; + Z = One / Y; + Y = Z - X; + X = One / Three; + Z = Three / Nine; + X = X - Z; + T = Nine / TwentySeven; + Z = Z - T; + TstCond (Defect, X == Zero && Y == Zero && Z == Zero, + "Division lacks a Guard Digit, so error can exceed 1 ulp\n" + "or 1/3 and 3/9 and 9/27 may disagree"); + Y = F9 / One; + X = F9 - Half; + Y = (Y - Half) - X; + X = One + U2; + T = X / One; + X = T - X; + if ((X == Zero) && (Y == Zero) && (Z == Zero)) + GDiv = Yes; + else + { + GDiv = No; + TstCond (Serious, false, "Division lacks a Guard Digit, so X/1 != X"); + } + X = One / (One + U2); + Y = X - Half - Half; + TstCond (Serious, Y < Zero, "Computed value of 1/1.000..1 >= 1"); + X = One - U2; + Y = One + Radix * U2; + Z = X * Radix; + T = Y * Radix; + R = Z / Radix; + StickyBit = T / Radix; + X = R - X; + Y = StickyBit - Y; + TstCond (Failure, X == Zero && Y == Zero, + "* and/or / gets too many last digits wrong"); + Y = One - U1; + X = One - F9; + Y = One - Y; + T = Radix - U2; + Z = Radix - BMinusU2; + T = Radix - T; + if ((X == U1) && (Y == U1) && (Z == U2) && (T == U2)) + GAddSub = Yes; + else + { + GAddSub = No; + TstCond (Serious, false, + "- lacks Guard Digit, so cancellation is obscured"); + } + if (F9 != One && F9 - One >= Zero) + { + BadCond (Serious, "comparison alleges (1-U1) < 1 although\n"); + printf (" subtraction yields (1-U1) - 1 = 0 , thereby vitiating\n"); + printf (" such precautions against division by zero as\n"); + printf (" ... if (X == 1.0) {.....} else {.../(X-1.0)...}\n"); + } + if (GMult == Yes && GDiv == Yes && GAddSub == Yes) + printf + (" *, /, and - appear to have guard digits, as they should.\n"); + /*=============================================*/ + Milestone = 40; + /*=============================================*/ + Pause (); + printf ("Checking rounding on multiply, divide and add/subtract.\n"); + RMult = Other; + RDiv = Other; + RAddSub = Other; + RadixD2 = Radix / Two; + A1 = Two; + Done = false; + do + { + AInvrse = Radix; + do + { + X = AInvrse; + AInvrse = AInvrse / A1; + } + while (!(FLOOR (AInvrse) != AInvrse)); + Done = (X == One) || (A1 > Three); + if (!Done) + A1 = Nine + One; + } + while (!(Done)); + if (X == One) + A1 = Radix; + AInvrse = One / A1; + X = A1; + Y = AInvrse; + Done = false; + do + { + Z = X * Y - Half; + TstCond (Failure, Z == Half, "X * (1/X) differs from 1"); + Done = X == Radix; + X = Radix; + Y = One / X; + } + while (!(Done)); + Y2 = One + U2; + Y1 = One - U2; + X = OneAndHalf - U2; + Y = OneAndHalf + U2; + Z = (X - U2) * Y2; + T = Y * Y1; + Z = Z - X; + T = T - X; + X = X * Y2; + Y = (Y + U2) * Y1; + X = X - OneAndHalf; + Y = Y - OneAndHalf; + if ((X == Zero) && (Y == Zero) && (Z == Zero) && (T <= Zero)) + { + X = (OneAndHalf + U2) * Y2; + Y = OneAndHalf - U2 - U2; + Z = OneAndHalf + U2 + U2; + T = (OneAndHalf - U2) * Y1; + X = X - (Z + U2); + StickyBit = Y * Y1; + S = Z * Y2; + T = T - Y; + Y = (U2 - Y) + StickyBit; + Z = S - (Z + U2 + U2); + StickyBit = (Y2 + U2) * Y1; + Y1 = Y2 * Y1; + StickyBit = StickyBit - Y2; + Y1 = Y1 - Half; + if ((X == Zero) && (Y == Zero) && (Z == Zero) && (T == Zero) + && (StickyBit == Zero) && (Y1 == Half)) + { + RMult = Rounded; + printf ("Multiplication appears to round correctly.\n"); + } + else if ((X + U2 == Zero) && (Y < Zero) && (Z + U2 == Zero) + && (T < Zero) && (StickyBit + U2 == Zero) && (Y1 < Half)) + { + RMult = Chopped; + printf ("Multiplication appears to chop.\n"); + } + else + printf ("* is neither chopped nor correctly rounded.\n"); + if ((RMult == Rounded) && (GMult == No)) + notify ("Multiplication"); + } + else + printf ("* is neither chopped nor correctly rounded.\n"); + /*=============================================*/ + Milestone = 45; + /*=============================================*/ + Y2 = One + U2; + Y1 = One - U2; + Z = OneAndHalf + U2 + U2; + X = Z / Y2; + T = OneAndHalf - U2 - U2; + Y = (T - U2) / Y1; + Z = (Z + U2) / Y2; + X = X - OneAndHalf; + Y = Y - T; + T = T / Y1; + Z = Z - (OneAndHalf + U2); + T = (U2 - OneAndHalf) + T; + if (!((X > Zero) || (Y > Zero) || (Z > Zero) || (T > Zero))) + { + X = OneAndHalf / Y2; + Y = OneAndHalf - U2; + Z = OneAndHalf + U2; + X = X - Y; + T = OneAndHalf / Y1; + Y = Y / Y1; + T = T - (Z + U2); + Y = Y - Z; + Z = Z / Y2; + Y1 = (Y2 + U2) / Y2; + Z = Z - OneAndHalf; + Y2 = Y1 - Y2; + Y1 = (F9 - U1) / F9; + if ((X == Zero) && (Y == Zero) && (Z == Zero) && (T == Zero) + && (Y2 == Zero) && (Y2 == Zero) && (Y1 - Half == F9 - Half)) + { + RDiv = Rounded; + printf ("Division appears to round correctly.\n"); + if (GDiv == No) + notify ("Division"); + } + else if ((X < Zero) && (Y < Zero) && (Z < Zero) && (T < Zero) + && (Y2 < Zero) && (Y1 - Half < F9 - Half)) + { + RDiv = Chopped; + printf ("Division appears to chop.\n"); + } + } + if (RDiv == Other) + printf ("/ is neither chopped nor correctly rounded.\n"); + BInvrse = One / Radix; + TstCond (Failure, (BInvrse * Radix - Half == Half), + "Radix * ( 1 / Radix ) differs from 1"); + /*=============================================*/ + Milestone = 50; + /*=============================================*/ + TstCond (Failure, ((F9 + U1) - Half == Half) + && ((BMinusU2 + U2) - One == Radix - One), + "Incomplete carry-propagation in Addition"); + X = One - U1 * U1; + Y = One + U2 * (One - U2); + Z = F9 - Half; + X = (X - Half) - Z; + Y = Y - One; + if ((X == Zero) && (Y == Zero)) + { + RAddSub = Chopped; + printf ("Add/Subtract appears to be chopped.\n"); + } + if (GAddSub == Yes) + { + X = (Half + U2) * U2; + Y = (Half - U2) * U2; + X = One + X; + Y = One + Y; + X = (One + U2) - X; + Y = One - Y; + if ((X == Zero) && (Y == Zero)) + { + X = (Half + U2) * U1; + Y = (Half - U2) * U1; + X = One - X; + Y = One - Y; + X = F9 - X; + Y = One - Y; + if ((X == Zero) && (Y == Zero)) + { + RAddSub = Rounded; + printf ("Addition/Subtraction appears to round correctly.\n"); + if (GAddSub == No) + notify ("Add/Subtract"); + } + else + printf ("Addition/Subtraction neither rounds nor chops.\n"); + } + else + printf ("Addition/Subtraction neither rounds nor chops.\n"); + } + else + printf ("Addition/Subtraction neither rounds nor chops.\n"); + S = One; + X = One + Half * (One + Half); + Y = (One + U2) * Half; + Z = X - Y; + T = Y - X; + StickyBit = Z + T; + if (StickyBit != Zero) + { + S = Zero; + BadCond (Flaw, "(X - Y) + (Y - X) is non zero!\n"); + } + StickyBit = Zero; + if ((GMult == Yes) && (GDiv == Yes) && (GAddSub == Yes) + && (RMult == Rounded) && (RDiv == Rounded) + && (RAddSub == Rounded) && (FLOOR (RadixD2) == RadixD2)) + { + printf ("Checking for sticky bit.\n"); + X = (Half + U1) * U2; + Y = Half * U2; + Z = One + Y; + T = One + X; + if ((Z - One <= Zero) && (T - One >= U2)) + { + Z = T + Y; + Y = Z - X; + if ((Z - T >= U2) && (Y - T == Zero)) + { + X = (Half + U1) * U1; + Y = Half * U1; + Z = One - Y; + T = One - X; + if ((Z - One == Zero) && (T - F9 == Zero)) + { + Z = (Half - U1) * U1; + T = F9 - Z; + Q = F9 - Y; + if ((T - F9 == Zero) && (F9 - U1 - Q == Zero)) + { + Z = (One + U2) * OneAndHalf; + T = (OneAndHalf + U2) - Z + U2; + X = One + Half / Radix; + Y = One + Radix * U2; + Z = X * Y; + if (T == Zero && X + Radix * U2 - Z == Zero) + { + if (Radix != Two) + { + X = Two + U2; + Y = X / Two; + if ((Y - One == Zero)) + StickyBit = S; + } + else + StickyBit = S; + } + } + } + } + } + } + if (StickyBit == One) + printf ("Sticky bit apparently used correctly.\n"); + else + printf ("Sticky bit used incorrectly or not at all.\n"); + TstCond (Flaw, !(GMult == No || GDiv == No || GAddSub == No || + RMult == Other || RDiv == Other || RAddSub == Other), + "lack(s) of guard digits or failure(s) to correctly round or chop\n\ +(noted above) count as one flaw in the final tally below"); + /*=============================================*/ + Milestone = 60; + /*=============================================*/ + printf ("\n"); + printf ("Does Multiplication commute? "); + printf ("Testing on %d random pairs.\n", NoTrials); + Random9 = SQRT (FLOAT (3)); + Random1 = Third; + I = 1; + do + { + X = Random (); + Y = Random (); + Z9 = Y * X; + Z = X * Y; + Z9 = Z - Z9; + I = I + 1; + } + while (!((I > NoTrials) || (Z9 != Zero))); + if (I == NoTrials) + { + Random1 = One + Half / Three; + Random2 = (U2 + U1) + One; + Z = Random1 * Random2; + Y = Random2 * Random1; + Z9 = (One + Half / Three) * ((U2 + U1) + One) - (One + Half / + Three) * ((U2 + U1) + + One); + } + if (!((I == NoTrials) || (Z9 == Zero))) + BadCond (Defect, "X * Y == Y * X trial fails.\n"); + else + printf (" No failures found in %d integer pairs.\n", NoTrials); + /*=============================================*/ + Milestone = 70; + /*=============================================*/ + printf ("\nRunning test of square root(x).\n"); + TstCond (Failure, (Zero == SQRT (Zero)) + && (-Zero == SQRT (-Zero)) + && (One == SQRT (One)), "Square root of 0.0, -0.0 or 1.0 wrong"); + MinSqEr = Zero; + MaxSqEr = Zero; + J = Zero; + X = Radix; + OneUlp = U2; + SqXMinX (Serious); + X = BInvrse; + OneUlp = BInvrse * U1; + SqXMinX (Serious); + X = U1; + OneUlp = U1 * U1; + SqXMinX (Serious); + if (J != Zero) + Pause (); + printf ("Testing if sqrt(X * X) == X for %d Integers X.\n", NoTrials); + J = Zero; + X = Two; + Y = Radix; + if ((Radix != One)) + do + { + X = Y; + Y = Radix * Y; + } + while (!((Y - X >= NoTrials))); + OneUlp = X * U2; + I = 1; + while (I <= NoTrials) + { + X = X + One; + SqXMinX (Defect); + if (J > Zero) + break; + I = I + 1; + } + printf ("Test for sqrt monotonicity.\n"); + I = -1; + X = BMinusU2; + Y = Radix; + Z = Radix + Radix * U2; + NotMonot = false; + Monot = false; + while (!(NotMonot || Monot)) + { + I = I + 1; + X = SQRT (X); + Q = SQRT (Y); + Z = SQRT (Z); + if ((X > Q) || (Q > Z)) + NotMonot = true; + else + { + Q = FLOOR (Q + Half); + if (!(I > 0 || Radix == Q * Q)) + Monot = true; + else if (I > 0) + { + if (I > 1) + Monot = true; + else + { + Y = Y * BInvrse; + X = Y - U1; + Z = Y + U1; + } + } + else + { + Y = Q; + X = Y - U2; + Z = Y + U2; + } + } + } + if (Monot) + printf ("sqrt has passed a test for Monotonicity.\n"); + else + { + BadCond (Defect, ""); + printf ("sqrt(X) is non-monotonic for X near %s .\n", Y.str()); + } + /*=============================================*/ + Milestone = 110; + /*=============================================*/ + printf ("Seeking Underflow thresholds UfThold and E0.\n"); + D = U1; + if (Precision != FLOOR (Precision)) + { + D = BInvrse; + X = Precision; + do + { + D = D * BInvrse; + X = X - One; + } + while (X > Zero); + } + Y = One; + Z = D; + /* ... D is power of 1/Radix < 1. */ + do + { + C = Y; + Y = Z; + Z = Y * Y; + } + while ((Y > Z) && (Z + Z > Z)); + Y = C; + Z = Y * D; + do + { + C = Y; + Y = Z; + Z = Y * D; + } + while ((Y > Z) && (Z + Z > Z)); + if (Radix < Two) + HInvrse = Two; + else + HInvrse = Radix; + H = One / HInvrse; + /* ... 1/HInvrse == H == Min(1/Radix, 1/2) */ + CInvrse = One / C; + E0 = C; + Z = E0 * H; + /* ...1/Radix^(BIG Integer) << 1 << CInvrse == 1/C */ + do + { + Y = E0; + E0 = Z; + Z = E0 * H; + } + while ((E0 > Z) && (Z + Z > Z)); + UfThold = E0; + E1 = Zero; + Q = Zero; + E9 = U2; + S = One + E9; + D = C * S; + if (D <= C) + { + E9 = Radix * U2; + S = One + E9; + D = C * S; + if (D <= C) + { + BadCond (Failure, + "multiplication gets too many last digits wrong.\n"); + Underflow = E0; + Y1 = Zero; + PseudoZero = Z; + Pause (); + } + } + else + { + Underflow = D; + PseudoZero = Underflow * H; + UfThold = Zero; + do + { + Y1 = Underflow; + Underflow = PseudoZero; + if (E1 + E1 <= E1) + { + Y2 = Underflow * HInvrse; + E1 = FABS (Y1 - Y2); + Q = Y1; + if ((UfThold == Zero) && (Y1 != Y2)) + UfThold = Y1; + } + PseudoZero = PseudoZero * H; + } + while ((Underflow > PseudoZero) + && (PseudoZero + PseudoZero > PseudoZero)); + } + /* Comment line 4530 .. 4560 */ + if (PseudoZero != Zero) + { + printf ("\n"); + Z = PseudoZero; + /* ... Test PseudoZero for "phoney- zero" violates */ + /* ... PseudoZero < Underflow or PseudoZero < PseudoZero + PseudoZero + ... */ + if (PseudoZero <= Zero) + { + BadCond (Failure, "Positive expressions can underflow to an\n"); + printf ("allegedly negative value\n"); + printf ("PseudoZero that prints out as: %s .\n", PseudoZero.str()); + X = -PseudoZero; + if (X <= Zero) + { + printf ("But -PseudoZero, which should be\n"); + printf ("positive, isn't; it prints out as %s .\n", X.str()); + } + } + else + { + BadCond (Flaw, "Underflow can stick at an allegedly positive\n"); + printf ("value PseudoZero that prints out as %s .\n", + PseudoZero.str()); + } + TstPtUf (); + } + /*=============================================*/ + Milestone = 120; + /*=============================================*/ + if (CInvrse * Y > CInvrse * Y1) + { + S = H * S; + E0 = Underflow; + } + if (!((E1 == Zero) || (E1 == E0))) + { + BadCond (Defect, ""); + if (E1 < E0) + { + printf ("Products underflow at a higher"); + printf (" threshold than differences.\n"); + if (PseudoZero == Zero) + E0 = E1; + } + else + { + printf ("Difference underflows at a higher"); + printf (" threshold than products.\n"); + } + } + printf ("Smallest strictly positive number found is E0 = %s .\n", E0.str()); + Z = E0; + TstPtUf (); + Underflow = E0; + if (N == 1) + Underflow = Y; + I = 4; + if (E1 == Zero) + I = 3; + if (UfThold == Zero) + I = I - 2; + UfNGrad = true; + switch (I) + { + case 1: + UfThold = Underflow; + if ((CInvrse * Q) != ((CInvrse * Y) * S)) + { + UfThold = Y; + BadCond (Failure, "Either accuracy deteriorates as numbers\n"); + printf ("approach a threshold = %s\n", UfThold.str()); + printf (" coming down from %s\n", C.str()); + printf + (" or else multiplication gets too many last digits wrong.\n"); + } + Pause (); + break; + + case 2: + BadCond (Failure, + "Underflow confuses Comparison, which alleges that\n"); + printf ("Q == Y while denying that |Q - Y| == 0; these values\n"); + printf ("print out as Q = %s, Y = %s .\n", Q.str(), Y2.str()); + printf ("|Q - Y| = %s .\n", FABS (Q - Y2).str()); + UfThold = Q; + break; + + case 3: + X = X; + break; + + case 4: + if ((Q == UfThold) && (E1 == E0) && (FABS (UfThold - E1 / E9) <= E1)) + { + UfNGrad = false; + printf ("Underflow is gradual; it incurs Absolute Error =\n"); + printf ("(roundoff in UfThold) < E0.\n"); + Y = E0 * CInvrse; + Y = Y * (OneAndHalf + U2); + X = CInvrse * (One + U2); + Y = Y / X; + IEEE = (Y == E0); + } + } + if (UfNGrad) + { + printf ("\n"); + if (setjmp (ovfl_buf)) + { + printf ("Underflow / UfThold failed!\n"); + R = H + H; + } + else + R = SQRT (Underflow / UfThold); + if (R <= H) + { + Z = R * UfThold; + X = Z * (One + R * H * (One + H)); + } + else + { + Z = UfThold; + X = Z * (One + H * H * (One + H)); + } + if (!((X == Z) || (X - Z != Zero))) + { + BadCond (Flaw, ""); + printf ("X = %s\n\tis not equal to Z = %s .\n", X.str(), Z.str()); + Z9 = X - Z; + printf ("yet X - Z yields %s .\n", Z9.str()); + printf (" Should this NOT signal Underflow, "); + printf ("this is a SERIOUS DEFECT\nthat causes "); + printf ("confusion when innocent statements like\n");; + printf (" if (X == Z) ... else"); + printf (" ... (f(X) - f(Z)) / (X - Z) ...\n"); + printf ("encounter Division by Zero although actually\n"); + if (setjmp (ovfl_buf)) + printf ("X / Z fails!\n"); + else + printf ("X / Z = 1 + %s .\n", ((X / Z - Half) - Half).str()); + } + } + printf ("The Underflow threshold is %s, below which\n", UfThold.str()); + printf ("calculation may suffer larger Relative error than "); + printf ("merely roundoff.\n"); + Y2 = U1 * U1; + Y = Y2 * Y2; + Y2 = Y * U1; + if (Y2 <= UfThold) + { + if (Y > E0) + { + BadCond (Defect, ""); + I = 5; + } + else + { + BadCond (Serious, ""); + I = 4; + } + printf ("Range is too narrow; U1^%d Underflows.\n", I); + } + /*=============================================*/ + Milestone = 130; + /*=============================================*/ + Y = -FLOOR (Half - TwoForty * LOG (UfThold) / LOG (HInvrse)) / TwoForty; + Y2 = Y + Y; + printf ("Since underflow occurs below the threshold\n"); + printf ("UfThold = (%s) ^ (%s)\nonly underflow ", HInvrse.str(), Y.str()); + printf ("should afflict the expression\n\t(%s) ^ (%s);\n", + HInvrse.str(), Y2.str()); + printf ("actually calculating yields:"); + if (setjmp (ovfl_buf)) + { + BadCond (Serious, "trap on underflow.\n"); + } + else + { + V9 = POW (HInvrse, Y2); + printf (" %s .\n", V9.str()); + if (!((V9 >= Zero) && (V9 <= (Radix + Radix + E9) * UfThold))) + { + BadCond (Serious, "this is not between 0 and underflow\n"); + printf (" threshold = %s .\n", UfThold.str()); + } + else if (!(V9 > UfThold * (One + E9))) + printf ("This computed value is O.K.\n"); + else + { + BadCond (Defect, "this is not between 0 and underflow\n"); + printf (" threshold = %s .\n", UfThold.str()); + } + } + /*=============================================*/ + Milestone = 160; + /*=============================================*/ + Pause (); + printf ("Searching for Overflow threshold:\n"); + printf ("This may generate an error.\n"); + Y = -CInvrse; + V9 = HInvrse * Y; + if (setjmp (ovfl_buf)) + { + I = 0; + V9 = Y; + goto overflow; + } + do + { + V = Y; + Y = V9; + V9 = HInvrse * Y; + } + while (V9 < Y); + I = 1; +overflow: + Z = V9; + printf ("Can `Z = -Y' overflow?\n"); + printf ("Trying it on Y = %s .\n", Y.str()); + V9 = -Y; + V0 = V9; + if (V - Y == V + V0) + printf ("Seems O.K.\n"); + else + { + printf ("finds a "); + BadCond (Flaw, "-(-Y) differs from Y.\n"); + } + if (Z != Y) + { + BadCond (Serious, ""); + printf ("overflow past %s\n\tshrinks to %s .\n", Y.str(), Z.str()); + } + if (I) + { + Y = V * (HInvrse * U2 - HInvrse); + Z = Y + ((One - HInvrse) * U2) * V; + if (Z < V0) + Y = Z; + if (Y < V0) + V = Y; + if (V0 - V < V0) + V = V0; + } + else + { + V = Y * (HInvrse * U2 - HInvrse); + V = V + ((One - HInvrse) * U2) * Y; + } + printf ("Overflow threshold is V = %s .\n", V.str()); + if (I) + printf ("Overflow saturates at V0 = %s .\n", V0.str()); + else + printf ("There is no saturation value because " + "the system traps on overflow.\n"); + V9 = V * One; + printf ("No Overflow should be signaled for V * 1 = %s\n", V9.str()); + V9 = V / One; + printf (" nor for V / 1 = %s.\n", V9.str()); + printf ("Any overflow signal separating this * from the one\n"); + printf ("above is a DEFECT.\n"); + /*=============================================*/ + Milestone = 170; + /*=============================================*/ + if (!(-V < V && -V0 < V0 && -UfThold < V && UfThold < V)) + { + BadCond (Failure, "Comparisons involving "); + printf ("+-%s, +-%s\nand +-%s are confused by Overflow.", + V.str(), V0.str(), UfThold.str()); + } + /*=============================================*/ + Milestone = 175; + /*=============================================*/ + printf ("\n"); + for (Indx = 1; Indx <= 3; ++Indx) + { + switch (Indx) + { + case 1: + Z = UfThold; + break; + case 2: + Z = E0; + break; + case 3: + Z = PseudoZero; + break; + } + if (Z != Zero) + { + V9 = SQRT (Z); + Y = V9 * V9; + if (Y / (One - Radix * E9) < Z || Y > (One + Radix * E9) * Z) + { /* dgh: + E9 --> * E9 */ + if (V9 > U1) + BadCond (Serious, ""); + else + BadCond (Defect, ""); + printf ("Comparison alleges that what prints as Z = %s\n", + Z.str()); + printf (" is too far from sqrt(Z) ^ 2 = %s .\n", Y.str()); + } + } + } + /*=============================================*/ + Milestone = 180; + /*=============================================*/ + for (Indx = 1; Indx <= 2; ++Indx) + { + if (Indx == 1) + Z = V; + else + Z = V0; + V9 = SQRT (Z); + X = (One - Radix * E9) * V9; + V9 = V9 * X; + if (((V9 < (One - Two * Radix * E9) * Z) || (V9 > Z))) + { + Y = V9; + if (X < W) + BadCond (Serious, ""); + else + BadCond (Defect, ""); + printf ("Comparison alleges that Z = %s\n", Z.str()); + printf (" is too far from sqrt(Z) ^ 2 (%s) .\n", Y.str()); + } + } + /*=============================================*/ + Milestone = 190; + /*=============================================*/ + Pause (); + X = UfThold * V; + Y = Radix * Radix; + if (X * Y < One || X > Y) + { + if (X * Y < U1 || X > Y / U1) + BadCond (Defect, "Badly"); + else + BadCond (Flaw, ""); + + printf (" unbalanced range; UfThold * V = %s\n\t%s\n", + X.str(), "is too far from 1.\n"); + } + /*=============================================*/ + Milestone = 200; + /*=============================================*/ + for (Indx = 1; Indx <= 5; ++Indx) + { + X = F9; + switch (Indx) + { + case 2: + X = One + U2; + break; + case 3: + X = V; + break; + case 4: + X = UfThold; + break; + case 5: + X = Radix; + } + Y = X; + if (setjmp (ovfl_buf)) + printf (" X / X traps when X = %s\n", X.str()); + else + { + V9 = (Y / X - Half) - Half; + if (V9 == Zero) + continue; + if (V9 == -U1 && Indx < 5) + BadCond (Flaw, ""); + else + BadCond (Serious, ""); + printf (" X / X differs from 1 when X = %s\n", X.str()); + printf (" instead, X / X - 1/2 - 1/2 = %s .\n", V9.str()); + } + } + /*=============================================*/ + Milestone = 210; + /*=============================================*/ + MyZero = Zero; + printf ("\n"); + printf ("What message and/or values does Division by Zero produce?\n"); + printf (" Trying to compute 1 / 0 produces ..."); + if (!setjmp (ovfl_buf)) + printf (" %s .\n", (One / MyZero).str()); + printf ("\n Trying to compute 0 / 0 produces ..."); + if (!setjmp (ovfl_buf)) + printf (" %s .\n", (Zero / MyZero).str()); + /*=============================================*/ + Milestone = 220; + /*=============================================*/ + Pause (); + printf ("\n"); + { + static const char *msg[] = { + "FAILUREs encountered =", + "SERIOUS DEFECTs discovered =", + "DEFECTs discovered =", + "FLAWs discovered =" + }; + int i; + for (i = 0; i < 4; i++) + if (ErrCnt[i]) + printf ("The number of %-29s %d.\n", msg[i], ErrCnt[i]); + } + printf ("\n"); + if ((ErrCnt[Failure] + ErrCnt[Serious] + ErrCnt[Defect] + ErrCnt[Flaw]) > 0) + { + if ((ErrCnt[Failure] + ErrCnt[Serious] + ErrCnt[Defect] == 0) + && (ErrCnt[Flaw] > 0)) + { + printf ("The arithmetic diagnosed seems "); + printf ("Satisfactory though flawed.\n"); + } + if ((ErrCnt[Failure] + ErrCnt[Serious] == 0) && (ErrCnt[Defect] > 0)) + { + printf ("The arithmetic diagnosed may be Acceptable\n"); + printf ("despite inconvenient Defects.\n"); + } + if ((ErrCnt[Failure] + ErrCnt[Serious]) > 0) + { + printf ("The arithmetic diagnosed has "); + printf ("unacceptable Serious Defects.\n"); + } + if (ErrCnt[Failure] > 0) + { + printf ("Potentially fatal FAILURE may have spoiled this"); + printf (" program's subsequent diagnoses.\n"); + } + } + else + { + printf ("No failures, defects nor flaws have been discovered.\n"); + if (!((RMult == Rounded) && (RDiv == Rounded) + && (RAddSub == Rounded) && (RSqrt == Rounded))) + printf ("The arithmetic diagnosed seems Satisfactory.\n"); + else + { + if (StickyBit >= One && + (Radix - Two) * (Radix - Nine - One) == Zero) + { + printf ("Rounding appears to conform to "); + printf ("the proposed IEEE standard P"); + if ((Radix == Two) && + ((Precision - Four * Three * Two) * + (Precision - TwentySeven - TwentySeven + One) == Zero)) + printf ("754"); + else + printf ("854"); + if (IEEE) + printf (".\n"); + else + { + printf (",\nexcept for possibly Double Rounding"); + printf (" during Gradual Underflow.\n"); + } + } + printf ("The arithmetic diagnosed appears to be Excellent!\n"); + } + } + printf ("END OF TEST.\n"); + return 0; +} + +template<typename FLOAT> +FLOAT +Paranoia<FLOAT>::Sign (FLOAT X) +{ + return X >= FLOAT (long (0)) ? 1 : -1; +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::Pause () +{ + if (do_pause) + { + fputs ("Press return...", stdout); + fflush (stdout); + getchar(); + } + printf ("\nDiagnosis resumes after milestone Number %d", Milestone); + printf (" Page: %d\n\n", PageNo); + ++Milestone; + ++PageNo; +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::TstCond (int K, int Valid, const char *T) +{ + if (!Valid) + { + BadCond (K, T); + printf (".\n"); + } +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::BadCond (int K, const char *T) +{ + static const char *msg[] = { "FAILURE", "SERIOUS DEFECT", "DEFECT", "FLAW" }; + + ErrCnt[K] = ErrCnt[K] + 1; + printf ("%s: %s", msg[K], T); +} + +/* Random computes + X = (Random1 + Random9)^5 + Random1 = X - FLOOR(X) + 0.000005 * X; + and returns the new value of Random1. */ + +template<typename FLOAT> +FLOAT +Paranoia<FLOAT>::Random () +{ + FLOAT X, Y; + + X = Random1 + Random9; + Y = X * X; + Y = Y * Y; + X = X * Y; + Y = X - FLOOR (X); + Random1 = Y + X * FLOAT ("0.000005"); + return (Random1); +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::SqXMinX (int ErrKind) +{ + FLOAT XA, XB; + + XB = X * BInvrse; + XA = X - XB; + SqEr = ((SQRT (X * X) - XB) - XA) / OneUlp; + if (SqEr != Zero) + { + if (SqEr < MinSqEr) + MinSqEr = SqEr; + if (SqEr > MaxSqEr) + MaxSqEr = SqEr; + J = J + 1; + BadCond (ErrKind, "\n"); + printf ("sqrt(%s) - %s = %s\n", (X * X).str(), X.str(), + (OneUlp * SqEr).str()); + printf ("\tinstead of correct value 0 .\n"); + } +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::NewD () +{ + X = Z1 * Q; + X = FLOOR (Half - X / Radix) * Radix + X; + Q = (Q - X * Z) / Radix + X * X * (D / Radix); + Z = Z - Two * X * D; + if (Z <= Zero) + { + Z = -Z; + Z1 = -Z1; + } + D = Radix * D; +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::SR3750 () +{ + if (!((X - Radix < Z2 - Radix) || (X - Z2 > W - Z2))) + { + I = I + 1; + X2 = SQRT (X * D); + Y2 = (X2 - Z2) - (Y - Z2); + X2 = X8 / (Y - Half); + X2 = X2 - Half * X2 * X2; + SqEr = (Y2 + Half) + (Half - X2); + if (SqEr < MinSqEr) + MinSqEr = SqEr; + SqEr = Y2 - X2; + if (SqEr > MaxSqEr) + MaxSqEr = SqEr; + } +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::IsYeqX () +{ + if (Y != X) + { + if (N <= 0) + { + if (Z == Zero && Q <= Zero) + printf ("WARNING: computing\n"); + else + BadCond (Defect, "computing\n"); + printf ("\t(%s) ^ (%s)\n", Z.str(), Q.str()); + printf ("\tyielded %s;\n", Y.str()); + printf ("\twhich compared unequal to correct %s ;\n", X.str()); + printf ("\t\tthey differ by %s .\n", (Y - X).str()); + } + N = N + 1; /* ... count discrepancies. */ + } +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::PrintIfNPositive () +{ + if (N > 0) + printf ("Similar discrepancies have occurred %d times.\n", N); +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::TstPtUf () +{ + N = 0; + if (Z != Zero) + { + printf ("Since comparison denies Z = 0, evaluating "); + printf ("(Z + Z) / Z should be safe.\n"); + if (setjmp (ovfl_buf)) + goto very_serious; + Q9 = (Z + Z) / Z; + printf ("What the machine gets for (Z + Z) / Z is %s .\n", Q9.str()); + if (FABS (Q9 - Two) < Radix * U2) + { + printf ("This is O.K., provided Over/Underflow"); + printf (" has NOT just been signaled.\n"); + } + else + { + if ((Q9 < One) || (Q9 > Two)) + { + very_serious: + N = 1; + ErrCnt[Serious] = ErrCnt[Serious] + 1; + printf ("This is a VERY SERIOUS DEFECT!\n"); + } + else + { + N = 1; + ErrCnt[Defect] = ErrCnt[Defect] + 1; + printf ("This is a DEFECT!\n"); + } + } + V9 = Z * One; + Random1 = V9; + V9 = One * Z; + Random2 = V9; + V9 = Z / One; + if ((Z == Random1) && (Z == Random2) && (Z == V9)) + { + if (N > 0) + Pause (); + } + else + { + N = 1; + BadCond (Defect, "What prints as Z = "); + printf ("%s\n\tcompares different from ", Z.str()); + if (Z != Random1) + printf ("Z * 1 = %s ", Random1.str()); + if (!((Z == Random2) || (Random2 == Random1))) + printf ("1 * Z == %s\n", Random2.str()); + if (!(Z == V9)) + printf ("Z / 1 = %s\n", V9.str()); + if (Random2 != Random1) + { + ErrCnt[Defect] = ErrCnt[Defect] + 1; + BadCond (Defect, "Multiplication does not commute!\n"); + printf ("\tComparison alleges that 1 * Z = %s\n", Random2.str()); + printf ("\tdiffers from Z * 1 = %s\n", Random1.str()); + } + Pause (); + } + } +} + +template<typename FLOAT> +void +Paranoia<FLOAT>::notify (const char *s) +{ + printf ("%s test appears to be inconsistent...\n", s); + printf (" PLEASE NOTIFY KARPINKSI!\n"); +} + +/* ====================================================================== */ + +int main(int ac, char **av) +{ + setbuf(stdout, NULL); + setbuf(stderr, NULL); + + while (1) + switch (getopt (ac, av, "pvg:fdl")) + { + case -1: + return 0; + case 'p': + do_pause = true; + break; + case 'v': + verbose = true; + break; + case 'g': + { + static const struct { + const char *name; + const struct real_format *fmt; + } fmts[] = { +#define F(x) { #x, &x##_format } + F(ieee_single), + F(ieee_double), + F(ieee_extended_motorola), + F(ieee_extended_intel_96), + F(ieee_extended_intel_128), + F(ibm_extended), + F(ieee_quad), + F(vax_f), + F(vax_d), + F(vax_g), + F(i370_single), + F(i370_double), + F(real_internal), +#undef F + }; + + int i, n = sizeof (fmts)/sizeof(*fmts); + + for (i = 0; i < n; ++i) + if (strcmp (fmts[i].name, optarg) == 0) + break; + + if (i == n) + { + printf ("Unknown implementation \"%s\"; " + "available implementations:\n", optarg); + for (i = 0; i < n; ++i) + printf ("\t%s\n", fmts[i].name); + return 1; + } + + // We cheat and use the same mode all the time, but vary + // the format used for that mode. + real_format_for_mode[int(real_c_float::MODE) - int(QFmode)] + = fmts[i].fmt; + + Paranoia<real_c_float>().main(); + break; + } + + case 'f': + Paranoia < native_float<float> >().main(); + break; + case 'd': + Paranoia < native_float<double> >().main(); + break; + case 'l': +#ifndef NO_LONG_DOUBLE + Paranoia < native_float<long double> >().main(); +#endif + break; + + case '?': + puts ("-p\tpause between pages"); + puts ("-g<FMT>\treal.c implementation FMT"); + puts ("-f\tnative float"); + puts ("-d\tnative double"); + puts ("-l\tnative long double"); + return 0; + } +} + +/* GCC stuff referenced by real.o. */ + +extern "C" void +fancy_abort () +{ + abort (); +} + +int target_flags = 0; + +extern "C" int +floor_log2_wide (unsigned HOST_WIDE_INT x) +{ + int log = -1; + while (x != 0) + log++, + x >>= 1; + return log; +} diff --git a/gcc-4.8.3/contrib/patch_tester.sh b/gcc-4.8.3/contrib/patch_tester.sh new file mode 100755 index 000000000..74b8e9e8c --- /dev/null +++ b/gcc-4.8.3/contrib/patch_tester.sh @@ -0,0 +1,518 @@ +#!/bin/sh + +# Tests a set of patches from a directory. +# Copyright (C) 2007, 2008, 2011 Free Software Foundation, Inc. +# Contributed by Sebastian Pop <sebastian.pop@amd.com> + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +cat <<EOF + +WARNING: This script should only be fed with patches from known + authorized and trusted sources. Don't even think about + hooking it up to a raw feed from the gcc-patches list or + you'll regret it. + +EOF + +args=$@ + +svnpath=svn://gcc.gnu.org/svn/gcc +dashj= +default_standby=1 +standby=$default_standby +default_watermark=0.60 +watermark=$default_watermark +savecompilers=false +nopristinecache=false +nogpg=false +stop=false + +usage() { + cat <<EOF +patch_tester.sh [-j<N>] [-standby N] [-watermark N] [-savecompilers] [-nogpg] + [-svnpath URL] [-stop] [-nopristinecache] + <source_dir> [patches_dir [state_dir [build_dir]]] + + J is the flag passed to make. Default is empty string. + + STANDBY is the number of minutes between checks for new patches in + PATCHES_DIR. Default is ${default_standby} minutes. + + WATERMARK is the 5 minute average system charge under which a new + compile can start. Default is ${default_watermark}. + + SAVECOMPILERS copies the compilers in the same directory as the + test results for the non patched version. Default is not copy. + + NOPRISTINECACHE prevents use of cached test results from any earlier + test runs on the pristine version of the branch and revision under + test (the default behaviour). This should be used when testing the + same revision and patch with multiple sets of configure options, as + these may affect the set of baseline failures. + + NOGPG can be used to avoid checking the GPG signature of patches. + + URL is the location of the GCC SVN repository. The default is + ${svnpath}. + + STOP exits when PATCHES_DIR is empty. + + SOURCE_DIR is the directory containing GCC's toplevel configure. + + PATCHES_DIR is the directory containing the patches to be tested. + Default is SOURCE_DIR/patches. + + STATE_DIR is where the tester maintains its internal state. + Default is SOURCE_DIR/state. + + BUILD_DIR is the build tree, a temporary directory that this + script will delete and recreate. Default is SOURCE_DIR/obj. + +EOF + exit 1 +} + +makedir () { + DIRNAME=$1 + mkdir -p $DIRNAME + if [ $? -ne 0 ]; then + echo "ERROR: could not make directory $DIRNAME" + exit 1 + fi +} + +while [ $# -ne 0 ]; do + case $1 in + -j*) + dashj=$1; shift + ;; + -standby) + [[ $# > 2 ]] || usage + standby=$2; shift; shift + ;; + -watermark) + [[ $# > 2 ]] || usage + watermark=$2; shift; shift + ;; + -savecompilers) + savecompilers=true; shift + ;; + -nopristinecache) + nopristinecache=true; shift + ;; + -nogpg) + nogpg=true; shift + ;; + -stop) + stop=true; shift + ;; + -svnpath) + svnpath=$2; shift; shift + ;; + -*) + echo "Invalid option: $1" + usage + ;; + *) + break + ;; + esac +done + +test $# -eq 0 && usage + +SOURCE=$1 +PATCHES= +STATE= +BUILD= + +if [[ $# < 2 ]]; then + PATCHES=$SOURCE/patches +else + PATCHES=$2 +fi +if [[ $# < 3 ]]; then + STATE=$SOURCE/state +else + STATE=$3 +fi +if [[ $# < 4 ]]; then + BUILD=$SOURCE/obj +else + BUILD=$4 +fi + +[ -d $PATCHES ] || makedir $PATCHES +[ -d $STATE ] || makedir $STATE +[ -d $STATE/patched ] || makedir $STATE/patched +[ -d $SOURCE ] || makedir $SOURCE +[ -f $SOURCE/config.guess ] || { + cd $SOURCE + svn -q co $svnpath/trunk . + if [ $? -ne 0 ]; then + echo "ERROR: initial svn checkout failed" + exit 1 + fi +} + +# This can contain required local settings: +# default_config configure options, always passed +# default_make make bootstrap options, always passed +# default_check make check options, always passed +[ -f $STATE/defaults ] && . $STATE/defaults + +VERSION=`svn info $SOURCE | grep "^Revision:" | sed -e "s/^Revision://g" -e "s/ //g"` + +exec >> $STATE/tester.log 2>&1 || exit 1 +set -x + +TESTING=$STATE/testing +REPORT=$TESTING/report +PRISTINE=$TESTING/pristine +PATCHED=$TESTING/patched +PATCH= +TARGET=`$SOURCE/config.guess || exit 1` +TESTLOGS="gcc/testsuite/gcc/gcc.sum +gcc/testsuite/gfortran/gfortran.sum +gcc/testsuite/g++/g++.sum +gcc/testsuite/objc/objc.sum +$TARGET/libstdc++-v3/testsuite/libstdc++.sum +$TARGET/libffi/testsuite/libffi.sum +$TARGET/libjava/testsuite/libjava.sum +$TARGET/libgomp/testsuite/libgomp.sum +$TARGET/libmudflap/testsuite/libmudflap.sum" +COMPILERS="gcc/cc1 +gcc/cc1obj +gcc/cc1plus +gcc/f951 +gcc/jc1 +gcc/gnat1 +gcc/tree1" + +now () { + echo `TZ=UTC date +"%Y_%m_%d_%H_%M_%S"` +} + +report () { + echo "$@" >> $REPORT +} + +freport () { + if [ -s $1 ]; then + report "(cat $1" + cat $1 >> $REPORT + report "tac)" + fi +} + +cleanup () { + cd $SOURCE + svn cleanup && svn revert -R . && svn st | cut -d' ' -f5- | xargs rm -v +} + +selfexec () { + exec ${CONFIG_SHELL-/bin/sh} $0 $args +} + +update () { + svn_branch=`grep "^branch:" $PATCH | sed -e "s/^branch://g" -e "s/ //g"` + if [ x$svn_branch = x ]; then + svn_branch=trunk + fi + + svn_revision=`grep "^revision:" $PATCH | sed -e "s/^revision://g" -e "s/ //g"` + if [ x$svn_revision = x ]; then + svn_revision=HEAD + fi + + cleanup + cd $SOURCE + case $svn_branch in + trunk) + if ! svn switch -r $svn_revision $svnpath/trunk &> $TESTING/svn ; then + report "failed to update svn sources with" + report "svn switch -r $svn_revision $svnpath/trunk" + freport $TESTING/svn + return 1 + fi + ;; + + ${svnpath}*) + if ! svn switch -r $svn_revision $svn_branch &> $TESTING/svn ; then + report "failed to update svn sources with" + report "svn switch -r $svn_revision $svn_branch" + freport $TESTING/svn + return 1 + fi + ;; + + *) + if ! svn switch -r $svn_revision $svnpath/branches/$svn_branch &> $TESTING/svn ; then + report "failed to update svn sources with" + report "svn switch -r $svn_revision $svnpath/branches/$svn_branch" + freport $TESTING/svn + return 1 + fi + ;; + esac + contrib/gcc_update --touch + + current_version=`svn info $SOURCE | grep "^Revision:" | sed -e "s/^Revision://g" -e "s/ //g"` + if [[ $VERSION < $current_version ]]; then + if [ -f $SOURCE/contrib/patch_tester.sh ]; then + selfexec + fi + fi + + return 0 +} + +apply_patch () { + if [ $nogpg = false ]; then + if ! gpg --batch --verify $PATCH &> $TESTING/gpgverify ; then + report "your patch failed to verify:" + freport $TESTING/gpgverify + return 1 + fi + fi + + cd $SOURCE + if ! patch -p0 < $PATCH &> $TESTING/patching ; then + report "your patch failed to apply:" + report "(check that the patch was created at the top level)" + freport $TESTING/patching + return 1 + fi + + # Just assume indexes for now -- not really great, but svn always + # makes them. + grep "^Index: " $PATCH | sed -e 's/Index: //' | while read file; do + # If the patch resulted in an empty file, delete it. + # This is how svn reports deletions. + if [ ! -s $file ]; then + rm -f $file + report "Deleting empty file $file" + fi + done +} + +save_compilers () { + for COMPILER in $COMPILERS ; do + if [ -f $BUILD/$COMPILER ]; then + cp $BUILD/$COMPILER $PRISTINE + fi + done +} + +bootntest () { + rm -rf $BUILD + mkdir $BUILD + cd $BUILD + + CONFIG_OPTIONS=`grep "^configure:" $PATCH | sed -e "s/^configure://g"` + CONFIG_OPTIONS="$default_config $CONFIG_OPTIONS" + if ! eval $SOURCE/configure $CONFIG_OPTIONS &> $1/configure ; then + report "configure with `basename $1` version failed with:" + freport $1/configure + return 1 + fi + + MAKE_ARGS=`grep "^make:" $PATCH | sed -e "s/^make://g"` + MAKE_ARGS="$default_make $MAKE_ARGS" + if ! eval make $dashj $MAKE_ARGS &> $1/bootstrap ; then + report "bootstrap with `basename $1` version failed with last lines:" + tail -30 $1/bootstrap > $1/last_bootstrap + freport $1/last_bootstrap + report "grep --context=20 Error bootstrap:" + grep --context=20 Error $1/bootstrap > $1/bootstrap_error + freport $1/bootstrap_error + return 1 + fi + + CHECK_OPTIONS=`grep "^check:" $PATCH | sed -e "s/^check://g"` + CHECK_OPTIONS="$default_check $CHECK_OPTIONS" + eval make $dashj $CHECK_OPTIONS -k check &> $1/check + + SUITESRUN="`grep 'Summary ===' $1/check | cut -d' ' -f 2 | sort`" + if [ x$SUITESRUN = x ]; then + report "check with `basename $1` version failed, no testsuites were run" + return 1 + fi + + for LOG in $TESTLOGS ; do + if [ -f $BUILD/$LOG ]; then + mv $BUILD/$LOG $1 + mv `echo "$BUILD/$LOG" | sed -e "s/\.sum/\.log/g"` $1 + fi + done + + return 0 +} + +bootntest_patched () { + cleanup + mkdir -p $PATCHED + apply_patch && bootntest $PATCHED + return $? +} + +# Build the pristine tree with exactly the same options as the patch under test. +bootntest_pristine () { + cleanup + current_branch=`svn info $SOURCE | grep "^URL:" | sed -e "s/URL: //g" -e "s,${svnpath},,g"` + current_version=`svn info $SOURCE | grep "^Revision:" | sed -e "s/^Revision://g" -e "s/ //g"` + PRISTINE=$STATE/$current_branch/$current_version + + if [ $nopristinecache = true ]; then + rm -rf $PRISTINE + fi + if [ -d $PRISTINE ]; then + ln -s $PRISTINE $TESTING/pristine + return 0 + else + mkdir -p $PRISTINE + ln -s $PRISTINE $TESTING/pristine + bootntest $PRISTINE + RETVAL=$? + if [ $RETVAL = 0 -a $savecompilers = true ]; then + save_compilers + fi + return $RETVAL + fi +} + +regtest () { + touch $1/report + touch $1/passes + touch $1/failed + touch $1/regress + + for LOG in $TESTLOGS ; do + NLOG=`basename $LOG` + if [ -f $1/$NLOG ]; then + awk '/^FAIL: / { print "'$NLOG'",$2; }' $1/$NLOG + fi + done | sort | uniq > $1/failed + + comm -12 $1/failed $1/passes >> $1/regress + NUMREGRESS=`wc -l < $1/regress | tr -d ' '` + + if [ $NUMREGRESS -eq 0 ] ; then + for LOG in $TESTLOGS ; do + NLOG=`basename $LOG` + if [ -f $1/$NLOG ] ; then + awk '/^PASS: / { print "'$NLOG'",$2; }' $1/$NLOG + fi + done | sort | uniq | comm -23 - $1/failed > $1/passes + echo "there are no regressions with your patch." >> $1/report + else + echo "with your patch there are $NUMREGRESS regressions." >> $1/report + echo "list of regressions with your patch:" >> $1/report + cat $1/regress >> $1/report + fi +} + +contrib_compare_tests () { + report "comparing logs with contrib/compare_tests:" + for LOG in $TESTLOGS ; do + NLOG=`basename $LOG` + if [ -f $PRISTINE/$NLOG -a -f $PATCHED/$NLOG ]; then + $SOURCE/contrib/compare_tests $PRISTINE/$NLOG $PATCHED/$NLOG > $TESTING/compare_$NLOG + freport $TESTING/compare_$NLOG + fi + done +} + +compare_passes () { + regtest $PRISTINE + cp $PRISTINE/passes $PATCHED + regtest $PATCHED + freport $PATCHED/report + report "FAILs with patched version:" + freport $PATCHED/failed + report "FAILs with pristine version:" + freport $PRISTINE/failed + + # contrib_compare_tests +} + +write_report () { + backup_patched=$STATE/patched/`now` + report "The files used for the validation of your patch are stored in $backup_patched on the tester machine." + + EMAIL=`grep "^email:" $PATCH | sed -e "s/^email://g" -e "s/ //g"` + if [ x$EMAIL != x ]; then + mutt -s "[regtest] Results for `basename $PATCH` on $TARGET" -i $REPORT -a $PATCH $EMAIL + fi + + mv $TESTING $backup_patched +} + +announce () { + EMAIL=`grep "^email:" $PATCH | sed -e "s/^email://g" -e "s/ //g"` + if [ x$EMAIL != x ]; then + + START_REPORT=$TESTING/start_report + echo "Hi, " >> $START_REPORT + echo "I'm the automatic tester running on $TARGET." >> $START_REPORT + echo "I just started to look at your patch `basename $PATCH`." >> $START_REPORT + echo "Bye, your automatic tester." >> $START_REPORT + mutt -s "[regtest] Starting bootstrap for `basename $PATCH` on $TARGET" -i $START_REPORT $EMAIL + fi +} + +# After selfexec, $TESTING is already set up. +if [ -d $TESTING ]; then + # The only file in $TESTING is the patch. + PATCH=`ls -rt -1 $TESTING | head -1` + PATCH=$TESTING/$PATCH + if [ -f $PATCH ]; then + bootntest_patched && bootntest_pristine && compare_passes + write_report + fi +fi + +firstpatch=true +while true; do + PATCH=`ls -rt -1 $PATCHES | head -1` + if [ x$PATCH = x ]; then + if [ $stop = true ]; then + if [ $firstpatch = true ]; then + echo "No patches ready to test, quitting." + exit 1 + else + echo "No more patches to test." + exit 0 + fi + fi + sleep ${standby}m + else + firstpatch=false + sysload=`uptime | cut -d, -f 5` + if [[ $sysload > $watermark ]]; then + # Wait a bit when system load is too high. + sleep ${standby}m + else + mkdir -p $TESTING + mv $PATCHES/$PATCH $TESTING/ + PATCH=$TESTING/$PATCH + + announce + update && bootntest_patched && bootntest_pristine && compare_passes + write_report + fi + fi +done diff --git a/gcc-4.8.3/contrib/prepare_patch.sh b/gcc-4.8.3/contrib/prepare_patch.sh new file mode 100755 index 000000000..8385f315c --- /dev/null +++ b/gcc-4.8.3/contrib/prepare_patch.sh @@ -0,0 +1,96 @@ +#!/bin/sh +#set -x + +# Prepares a patch for the patch tester. +# Copyright (C) 2007 Free Software Foundation, Inc. +# Contributed by Sebastian Pop <sebastian.pop@amd.com> + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +usage() { + cat <<EOF +prepare_patch.sh <source_dir> [patches_dir] + + SOURCE_DIR is the directory containing GCC's toplevel configure. + + PATCHES_DIR is the directory where the patch will be copied to. + Default is SOURCE_DIR/patches. + +EOF + exit 1 +} + +test $# -eq 0 && usage + +SOURCE=$1 +PATCHES= + +if [[ "$#" < 2 ]]; then + PATCHES=$SOURCE/patches +else + PATCHES=$2 +fi + +[ -f $SOURCE/config.guess ] || usage +[ -d $PATCHES ] || mkdir -p $PATCHES + +echo "Enter a name for this patch: " +read name +PATCH=$PATCHES/`TZ=UTC date +"%Y_%m_%d_%H_%M_%S"`_$name.diff + +echo "Enter the email where the report should be sent: " +read email +echo "email:$email" >> $PATCH + +branch=`svn info $SOURCE | grep URL: | sed -e "s/^URL: //g"` +echo "Enter svn branch (svn info in $SOURCE reports $branch, default is trunk): " +read svn_branch +if [ x$svn_branch = x ]; then + svn_branch=trunk +fi +echo "branch:$svn_branch" >> $PATCH + +revision=`svn info $SOURCE | grep Revision: | sed -e "s/^Revision: //g"` +echo "Enter svn revision (svn info in $SOURCE reports $revision, default is HEAD): " +read svn_revision +if [ x$svn_revision = x ]; then + svn_revision=HEAD +fi +echo "revision:$svn_revision" >> $PATCH + +echo "Enter configure options: " +read configure_options +echo "configure:$configure_options" >> $PATCH + +echo "Enter make options: " +read make_options +echo "make:$make_options" >> $PATCH + +echo "Enter make check options: " +read check_options +echo "check:$check_options" >> $PATCH + +echo "" >> $PATCH + +svn diff $SOURCE | tee -a $PATCH + +cat <<EOF + +You can now edit your patch, include a ChangeLog, and before +submitting to the patch tester, don't forget to sign it with: + + gpg --clearsign $PATCH + +EOF diff --git a/gcc-4.8.3/contrib/reghunt/ChangeLog b/gcc-4.8.3/contrib/reghunt/ChangeLog new file mode 100644 index 000000000..0e9ad9a85 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/ChangeLog @@ -0,0 +1,112 @@ +2014-05-22 Release Manager + + * GCC 4.8.3 released. + +2013-10-16 Release Manager + + * GCC 4.8.2 released. + +2013-05-31 Release Manager + + * GCC 4.8.1 released. + +2013-03-22 Release Manager + + * GCC 4.8.0 released. + +2010-06-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * bin/gcc-svn-ids: Fix unportable shell quoting. + * date_based/reg_periodic: Likewise. + * date_based/reg_search: Likewise. + +2009-02-17 Janis Johnson <janis187@us.ibm.com> + + * examples: New directory. + * examples/gcc-svn-env: New. + * examples/reg-watch: New. + * examples/reg-watch.awk: New. + * examples/common.config: New. + * examples/testall: New. + * examples/28970.config: New. + * examples/28970.list: New. + * examples/28970.c: New. + * examples/28970.log: New. + * examples/29106.config: New. + * examples/29106.list: New. + * examples/29106.test: New. + * examples/29106.cc: New. + * examples/29106.log: New. + * examples/29478.config: New. + * examples/29478.list: New. + * examples/29478.c: New. + * examples/29478.log: New. + * examples/29906a.config: New. + * examples/29906a.list: New. + * examples/29906a.cc: New. + * examples/29906a.log: New. + * examples/29906b.config: New. + * examples/29906b.list: New. + * examples/29906b.cc: New. + * examples/29906b.log: New. + * examples/30643.config: New. + * examples/30643.list: New. + * examples/30643.c: New. + * examples/30643.test: New. + * examples/30643.log: New. + + * bin: New directory. + * bin/reg-hunt: New. + * bin/reg_periodic: New. + * bin/gcc-svn-update: New. + * bin/gcc-svn-update-fix: New. + * bin/gcc-build-simple: New. + * bin/gcc-build-full: New. + * bin/gcc-cleanup: New. + * bin/reg-test: New. + * bin/reg-newmid: New. + * bin/gcc-test-ice-on-valid-code: New. + * bin/gcc-test-ice-on-invalid-code: New. + * bin/gcc-test-compiler-hangs: New. + * bin/gcc-test-missing-warning: New. + * bin/gcc-test-bogus-warning: New. + * bin/gcc-test-segfault-on-valid-code: New. + * bin/gcc-test-rejects-valid: New. + * bin/gcc-test-accepts-invalid: New. + * bin/gcc-test-wrong-code: New. + * bin/gcc-svn-patchlist: New. + * bin/gcc-svn-checkfail: New. + * bin/gcc-svn-recordfail: New. + * bin/gcc-svn-report: New. + * bin/gcc-svn-ids: New. + + * date_based: New directory. + * README: Move from here ... + * date_based/README: to here. + * reg_search: Move from here ... + * date_based/reg_search: to here. + * reg_periodic: Move from here ... + * date_based/reg_periodic: to here. + * reg_test_template: Move from here ... + * date_based_reg_test_template: to here. + +2005-07-14 Ben Elliston <bje@au.ibm.com> + + * reg_test_template: Typo fix. + +2005-01-17 Kazu Hirata <kazu@cs.umass.edu> + + * reg_periodic, reg_search: Fix the uses of date command. + +2003-06-24 Janis Johnson <janis187@us.ibm.com> + + * reg_search: Replace existing uses of DATE with MADE_DATE and + use DATE for the date command. + * reg_periodic: Ditto. + +2003-03-27 Janis Johnson <janis187@us.ibm.com> + * README: New file. + * reg_search: New file. + * reg_periodic: New file. + * reg_test_template: New file. + diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-build-full b/gcc-4.8.3/contrib/reghunt/bin/gcc-build-full new file mode 100755 index 000000000..21e6d684f --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-build-full @@ -0,0 +1,52 @@ +#! /bin/sh + +# Perform a simple build of GCC for a particular language, using several +# environment variables defined by reghunt scripts and config files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +abort() { + echo "`date` $1" + exit 1 +} + +ID=$1 +LOGDIR=${REG_BUILDDIR}/logs/${BUGID}/${ID} +mkdir -p $LOGDIR + +echo "`date` building GCC ($REG_LANGS) for id ${ID}" + +cd $REG_BUILDDIR +rm -rf obj +mkdir obj +cd obj + +echo "REG_CONFOPTS = $REG_CONFOPTS" > ${LOGDIR}/configure.log +echo "REG_PREFIX = $REG_PREFIX" >> ${LOGDIR}/configure.log +echo "REG_LANGS = $REG_LANGS" >> ${LOGDIR}/configure.log +echo >> ${LOGDIR}/configure.log + +${REG_GCCSRC}/configure \ + --prefix=$REG_PREFIX \ + $REG_CONFOPTS \ + --enable-languages=$REG_LANGS \ + >> ${LOGDIR}/configure.log 2>&1 || abort " configure failed" + +make $REG_MAKE_J > ${LOGDIR}/make.log 2>&1 || abort " make failed" +make install > ${LOGDIR}/make.install.log 2>&1 || abort " make install failed" + +exit 0 diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-build-simple b/gcc-4.8.3/contrib/reghunt/bin/gcc-build-simple new file mode 100755 index 000000000..f2d8ea39c --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-build-simple @@ -0,0 +1,79 @@ +#! /bin/sh + +# Build a GCC compiler, using environment variables defined by several +# reghunt scripts and config files. +# +# This doesn't work for sources earlier than about 2003-02-25. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID="${1}" +LOGDIR=${REG_BUILDDIR}/logs/${BUGID}/${ID} +mkdir -p $LOGDIR + +msg() { + echo "`date` ${1}" +} + +abort() { + msg "${1}" + exit 1 +} + +msg "building $REG_COMPILER for id $ID" + +rm -rf $REG_OBJDIR +mkdir $REG_OBJDIR +cd $REG_OBJDIR + +#msg "configure" +${REG_GCCSRC}/configure \ + --prefix=$REG_PREFIX \ + --enable-languages=$REG_LANGS \ + $REG_CONFOPTS \ + > configure.log 2>&1 || abort " configure failed" + +#msg "make libraries" +make all-build-libiberty > ${LOGDIR}/make.all-build-libiberty.log 2>&1 || true +make all-libcpp > ${LOGDIR}/make.all-libcpp.log 2>&1 || true +make all-libdecnumber > ${LOGDIR}/make.all-libdecnumber.log 2>&1 || true +make all-intl > ${LOGDIR}/make.all-intl.log 2>&1 || true +make all-libbanshee > ${LOGDIR}/make.all-libbanshee.log 2>&1 || true +make configure-gcc > ${LOGDIR}/make.configure-gcc.log 2>&1 || true + +# hack for 3.3 branch +if [ ! -f libiberty/libiberty.a ]; then + if [ -d libiberty ]; then + # another hack for 3.2! + cd libiberty + make > ${LOGDIR}/make.libiberty.log 2>&1 || true + cd .. + else + mkdir -p libiberty + cd libiberty + ln -s ../build-${REG_BLD}/libiberty/libiberty.a . + cd .. + fi +fi + +cd gcc +# REG_COMPILER is cc1, cc1plus, or f951 +#msg "make $REG_COMPILER" +make $REG_MAKE_J $REG_COMPILER > ${LOGDIR}/make.${REG_COMPILER}.log 2>&1 \ + || abort " make failed" +msg "build completed" +exit 0 diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-cleanup b/gcc-4.8.3/contrib/reghunt/bin/gcc-cleanup new file mode 100755 index 000000000..3ec1b8f05 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-cleanup @@ -0,0 +1,20 @@ +#! /bin/sh + +# Clean up between regression hunts. + +if [ "x${REG_SRCDIR}" = "x" ]; then + if [ -f gcc-svn-env ]; then + . ./gcc-svn-env + elif [ -f ../gcc-svn-env ]; then + . ../gcc-svn-env + elif [ -f ${HOME}/etc/gcc-svn-env ]; then + . ${HOME}/etc/gcc-svn-env + else + echo "$0: could not find gcc-svn-env file" + exit 1 + fi +fi + +rm -rf ${REG_SRCDIR}/gcc +rm -rf ${REG_BUILDDIR}/obj +rm -rf ${REG_PREFIX} diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-checkfail b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-checkfail new file mode 100755 index 000000000..3877a062b --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-checkfail @@ -0,0 +1,9 @@ +#! /bin/sh + +# Given an identifier that is an index into the current patch list, +# return 1 if the corresponding SVN revision number is in the list of +# known failures, 0 otherwise. + +ID=$1 +REV=`${REG_IDS} -f index -t rev ${ID}` +grep -q "^${REV}$" ${REG_FAILLIST} diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-ids b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-ids new file mode 100755 index 000000000..2953e56da --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-ids @@ -0,0 +1,88 @@ +#! /bin/sh + +# Convert one kind of changeset identifier to another. +# +# Usage: gcc-svn-ids -f from_kind -t to_kind id +# +# Where from_kind is one of: +# index index into the changeset list used by the reghunt tools +# rev is the Subversion revision name +# and to_kind is one of: +# index index into the changeset list used by the reghunt tools +# rev is the Subversion revision name +# date expanded UTC date string +# branch the branch, or "trunk" for mainline +# author the person who checked in the patch + +errmsg () { + echo $1 1>&2 +} + +usage () { + echo 'cvs_ids -f kind -t kind id' 1>&2 + echo ' where from_kind is index or rev' 1>&2 + echo ' and to_kind is index, rev, date, author, or branch' 1>&2 + echo "error" + exit 1 +} + +if [ "x${REG_CHANGESET_LIST}" = "x" ]; then + errmsg "REG_CHANGESET_LIST is not defined" + echo "error" + exit 1 +fi + +if [ ! -f ${REG_CHANGESET_LIST} ]; then + errmsg "changeset list ${REG_CHANGESET_LIST} does not exist" + echo "error" + exit 1 +fi + +# Use a shorter name here. +LIST=${REG_CHANGESET_LIST} + +while getopts "f:t:" ARG; do + case ${ARG} in + f) FROM_KIND="${OPTARG}";; + t) TO_KIND="${OPTARG}";; + h) usage;; + *) errmsg "unrecognized option: ${ARG}"; + usage;; + esac +done +shift `expr ${OPTIND} - 1` + +if [ $# -eq 0 ]; then + errmsg "too few arguments, ID is missing" + usage +fi +if [ $# -gt 1 ]; then + errmsg "unexpected arguments: $*" + usage +fi +ID="$1" + +case ${FROM_KIND} in +index) LINE=`awk -F '|' -v id="${ID}" '{if ($1 == id) print }' < ${LIST}`;; +rev) LINE=`awk -F '|' -v id="${ID}" '{if ($2 == id) print }' < ${LIST}`;; +*) errmsg "unrecognized FROM kind: ${FROM_KIND}"; + usage;; +esac + +if [ "x${LINE}" = "x" ]; then + errmsg "no entry found for ${FROM_KIND} = ${ID}" + echo "error" + exit 1 +fi + +case ${TO_KIND} in +index) TO_ID="`echo ${LINE} | awk -F '|' '{ print $1 }'`";; +rev) TO_ID="`echo ${LINE} | awk -F '|' '{ print $2 }'`";; +author) TO_ID="`echo ${LINE} | awk -F '|' '{ print $3 }'`";; +date) TO_ID="`echo ${LINE} | awk -F '|' '{ print $4 }'`";; +branch) TO_ID="`echo ${LINE} | awk -F '|' '{ print $5 }'`";; +*) errmsg "unrecognized TO kind: ${TO_KIND}"; + usage;; +esac + +echo ${TO_ID} diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-patchlist b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-patchlist new file mode 100755 index 000000000..02b2046a8 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-patchlist @@ -0,0 +1,85 @@ +#! /bin/bash + +# Make a list of revisions for commits to the branch of interest (trunk +# by default) between the specified dates. This skips commits that do +# not modify any existing files and changes by gccadmin. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +#set -ex + +abort() { + echo "$@" + exit 1 +} + +test $# -lt 2 && abort "usage: $0 low_date high_date [branch]" + +export TZ=UTC +LOW_DATE="$1" +HIGH_DATE="$2" + +if [ $# -eq 3 ]; then + BRANCH="$3" +else + BRANCH="" +fi + +# Verify branch name, convert a short name to the real one. + +case $BRANCH in +"") BRANCH="trunk";; +mline) BRANCH="trunk";; +mainline) BRANCH="trunk";; +4.1) BRANCH="gcc-4_1-branch";; +gcc-4_1-branch) ;; +4.0) BRANCH="gcc-4_0-branch";; +gcc-4_0-branch) ;; +3.4) BRANCH="gcc-3_4-branch";; +gcc-3_4-branch) ;; +*) ;; # abort "$0: unrecognized branch $BRANCH" +esac + +if [ "${BRANCH}" = "trunk" ]; then + BRANCHPATH=trunk +else + BRANCHPATH=branches/${BRANCH} +fi + +# Get the revision at the time of LOW_DATE. + +LOW_REV=`svn info --revision {"${LOW_DATE}"} \ + ${REG_SVN_REPO}/${BRANCHPATH} \ + | awk '/Revision:/ { print $2 }'` + +# Create the list of information for LOW_REV through HIGH_DATE in a +# form expected by gcc-svn-ids. + +svn log --quiet --non-interactive \ + --revision ${LOW_REV}:{"${HIGH_DATE}"} \ + ${REG_SVN_REPO}/${BRANCHPATH} \ + | awk -v branch=$BRANCH \ + 'BEGIN { id=0 } + /---/ { next } + /(no author)/ { next } + /gccadmin/ { next } + { sub(" \\+0000 (.*)","") + sub("r","",$1) + gsub(" \\| ","|") + id++ + print id "|" $0 "|" branch + }' diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-recordfail b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-recordfail new file mode 100755 index 000000000..cf5cde754 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-recordfail @@ -0,0 +1,8 @@ +#! /bin/sh + +# Given an identifier that is an index into the current patch list, +# record the corresponding SVN number to the list of known failures. + +ID=$1 +REV=`${REG_IDS} -f index -t rev ${ID}` +echo $REV >> ${REG_FAILLIST} diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-report b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-report new file mode 100755 index 000000000..a0de534b3 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-report @@ -0,0 +1,26 @@ +#! /bin/sh + +# Report a more informative version of the patch identifier. + +ID=$1 + +test "x${REG_IDS}" != "x" || exit 1 +test "x${REG_CHANGESET_LIST}" != "x" || exit 1 + +BRANCH=`${REG_IDS} -f index -t branch ${ID}` +cd ${REG_SRCDIR}/gcc +unset LANG +unset LC_ALL +REV=`${REG_IDS} -f index -t rev ${ID}` + +# long set of information +TZ=UTC \ +svn log --revision $REV + +# URL of diffs +echo +echo ' http://gcc.gnu.org/viewcvs?view=rev&rev='$REV + +# short set of information, without final line of hyphens +TZ=UTC \ +svn log --quiet --revision $REV | sed -e '/---/d' -e 's/^/ /' diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-update b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-update new file mode 100755 index 000000000..0f6aac866 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-update @@ -0,0 +1,117 @@ +#! /bin/bash + +# Update or check out GCC sources for a particular Subversion revision +# and a particular branch. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +#set -ex + +if [ $# != 1 ]; then + echo Usage: $0 id + exit 1 +fi + +if [ "x${REG_DO_CLEANUPS}" != "x" ]; then + reg_cleanup +fi + +ID=$1 +BRANCH="" + +######################################################################## +# Get sources. +######################################################################## + +svn_get() { + # In case there are problems with updates (there were with CVS), + # creating a file called REMOVE in the REG_SRCDIR directory causes us + # to start with a clean tree each time. + + unset LC_ALL + unset LANG + + cd ${REG_SRCDIR} + if [ -d gcc ]; then + # There's already a tree; do an update with the new revision. + cd gcc + echo "`date` svn update begun for id ${ID}, rev ${REV}" + echo svn update --non-interactive --revision ${REV} >> $LOG + svn update --non-interactive --revision ${REV} >> $LOG + if [ $? -eq 0 ]; then + echo "`date` svn update done" + else + echo "`date` svn update failed" + exit 1 + fi + else + echo "`date` svn checkout begun for id ${ID}, rev ${REV}" + echo svn checkout --non-interactive --revision ${REV} \ + ${REG_SVN_REPO}/${BRANCHPATH} gcc >> $LOG + svn checkout --non-interactive --revision ${REV} \ + ${REG_SVN_REPO}/${BRANCHPATH} gcc >> $LOG + if [ $? -eq 0 ]; then + echo "`date` svn checkout done" + else + echo "`date` svn checkout failed" + exit 1 + fi + cd gcc + fi + + # Touch generated files. + contrib/gcc_update --touch >> $LOG +} + +######################################################################## +# Main program +######################################################################## + +cd ${REG_SRCDIR} + +# This is a simple way to stop a long regression search fairly cleanly; +# just touch a file called STOP. + +if [ -f STOP ]; then + echo "`date` $0 detected STOP file" + rm -f STOP + exit 1 +fi + +# Set up the log file. +REV=`${REG_IDS} -f index -t rev ${ID}` +LOG=${REG_SRCDIR}/logs/${BUGID}/${REV}.log +mkdir -p ${REG_SRCDIR}/logs/${BUGID} +rm -f $LOG +touch $LOG + +# Get the branch for this patch. +BRANCH=`${REG_IDS} -f index -t branch ${ID}` +if [ "${BRANCH}" = "error" ]; then + echo "`date` $0: cannot determine the SVN branch for id ${ID}" + exit 1 +fi + +if [ "${BRANCH}" = "trunk" ]; then + BRANCHPATH=trunk +else + BRANCHPATH=branches/${BRANCH} +fi + +svn_get + +exit 0 diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-update-fix b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-update-fix new file mode 100755 index 000000000..977505502 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-svn-update-fix @@ -0,0 +1,113 @@ +#! /bin/bash + +#set -ex + +# Update an SVN tree for a particular date. + +if [ $# != 1 ]; then + echo Usage: $0 id + exit 1 +fi + +if [ "x${REG_DO_CLEANUPS}" != "x" ]; then + reg_cleanup +fi + +ID=$1 +BRANCH="" + +######################################################################## +# Get sources. +######################################################################## + +svn_get() { + # In case there are problems with updates (there were with CVS), + # creating a file called REMOVE in the REG_SRCDIR directory causes us + # to start with a clean tree each time. + + unset LC_ALL + unset LANG + + cd ${REG_SRCDIR} + if [ -d gcc ]; then + # There's already a tree; do an update with the new revision. + cd gcc + echo "`date` svn update begun for id ${ID}, rev ${REV} (fix)" + echo svn update --non-interactive --revision ${REV} >> $LOG + svn update --non-interactive --revision ${REV} >> $LOG + if [ $? -eq 0 ]; then + echo "`date` svn update done" + else + echo "`date` svn update failed" + exit 1 + fi + else + echo "`date` svn checkout begun for id ${ID}, rev ${REV}" + echo svn checkout --non-interactive --revision ${REV} \ + ${REG_SVN_REPO}/${BRANCHPATH} gcc >> $LOG + svn checkout --non-interactive --revision ${REV} \ + ${REG_SVN_REPO}/${BRANCHPATH} gcc >> $LOG + if [ $? -eq 0 ]; then + echo "`date` svn checkout done" + else + echo "`date` svn checkout failed" + exit 1 + fi + cd gcc + fi + + # Touch generated files. + contrib/gcc_update --touch >> $LOG +} + +######################################################################## +# Main program +######################################################################## + +cd ${REG_SRCDIR} + +# This is a simple way to stop a long regression search fairly cleanly; +# just touch a file called STOP. + +if [ -f STOP ]; then + echo "`date` $0 detected STOP file" + rm -f STOP + exit 1 +fi + +# Set up the log file. +REV=`${REG_IDS} -f index -t rev ${ID}` +LOG=${REG_SRCDIR}/logs/${BUGID}/${REV}.log +mkdir -p ${REG_SRCDIR}/logs/${BUGID} +rm -f $LOG +touch $LOG + +# Get the branch for this patch. +BRANCH=`${REG_IDS} -f index -t branch ${ID}` +if [ "${BRANCH}" = "error" ]; then + echo "`date` $0: cannot determine the SVN branch for id ${ID}" + exit 1 +fi + +if [ "${BRANCH}" = "trunk" ]; then + BRANCHPATH=trunk +else + BRANCHPATH=branches/${BRANCH} +fi + +svn_get + +# Look for a patch that's needed for this revision to build. +FIX=${REG_PATCHES}/${REV}.fix +echo "`date` looking for $FIX" +if [ -f $FIX ]; then + echo "`date` fix needed; checking whether it is already applied" + cd ${REG_SRCDIR}/gcc + patch --dry-run -s -p0 -i $FIX < /dev/null > /dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "`date` applying fix" + patch -s -p0 -i $FIX + fi +fi + +exit 0 diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-accepts-invalid b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-accepts-invalid new file mode 100755 index 000000000..564c0bbd7 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-accepts-invalid @@ -0,0 +1,48 @@ +#! /bin/sh + +# Test an "accepts-invalid" GCC bug, using environment variables set in +# several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -eq 0 ]; then + echo "`date` test compiled successfully for ${MSGID}" + exit $REG_FAIL +fi + +grep -q 'No such file or directory' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: missing file for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'error' ${LOG} +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: no error message for ${MSGID}" + exit $REG_ERROR +fi + +echo "`date` compilation failed for ${MSGID}" +exit $REG_PASS diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-bogus-warning b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-bogus-warning new file mode 100755 index 000000000..1bd0095ba --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-bogus-warning @@ -0,0 +1,42 @@ +#! /bin/sh + +# Test a "bogus-warning" GCC bug, using environment variables set in +# several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: compilation failed for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'warning' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` bogus warning detected for ${MSGID}" + exit $REG_FAIL +fi + +echo "`date` no bogus warning for ${MSGID}" +exit $REG_PASS diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-compiler-hangs b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-compiler-hangs new file mode 100755 index 000000000..043bc2699 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-compiler-hangs @@ -0,0 +1,63 @@ +#! /bin/sh + +# Test a bug for which the compiler hangs, using environment variables +# set in several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +trap "echo \"`date` compiler hang for ${MSGID}\"; pkill -9 cc1; exit $REG_FAIL" SIGUSR1 +SLEEPCNT=10 + +# Set up to trap the hang. +sleep $SLEEPCNT && /bin/kill -s SIGUSR1 0 & +SLEEPID=$! + +# This might hang. +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +# The command didn't hang. Capture its return value so we can check +# whether it had other unexpected problems. +RET=$? + +# Kill the sleep command so it won't finish normally and cause this +# process to get a signal telling it to report a failure. +/bin/kill $SLEEPID + +if [ $RET -eq 0 ]; then + echo "`date` test compiled successfully for ${MSGID}" + exit $REG_PASS +fi + +grep -q 'No such file or directory' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: missing file for ${MSGID}" + exit $REG_ERROR +fi + +grep -q "egmentation fault" +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: segfault for ${MSGID}" + exit $REG_ERROR +fi + +echo "`date` unexpected failure for ${MSGID}" +exit $REG_ERROR diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-ice-on-invalid-code b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-ice-on-invalid-code new file mode 100755 index 000000000..6e449a84a --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-ice-on-invalid-code @@ -0,0 +1,54 @@ +#! /bin/sh + +# Test an "ice-on-invalid-code" GCC bug, using environment variables set +# in several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: compilation succeeded for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'No such file or directory' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: missing file for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'internal compiler error' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` internal compiler error for ${MSGID}" + exit $REG_FAIL +fi + +grep -q 'error' ${LOG} +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: no error message for ${MSGID}" + exit $REG_ERROR +fi + +echo "`date` compilation failed for ${MSGID}" +exit $REG_PASS diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-ice-on-valid-code b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-ice-on-valid-code new file mode 100755 index 000000000..ecc5fe04a --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-ice-on-valid-code @@ -0,0 +1,48 @@ +#! /bin/sh + +# Test an "ice-on-valid-code" GCC bug, using environment variables set +# in several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -eq 0 ]; then + echo "`date` test compiled successfully for ${MSGID}" + exit $REG_PASS +fi + +grep -q 'No such file or directory' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: missing file for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'nternal.* error' ${LOG} +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: no ICE message for ${MSGID}" + exit $REG_ERROR +fi + +echo "`date` compilation failed for ${MSGID}" +exit $REG_FAIL diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-missing-warning b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-missing-warning new file mode 100755 index 000000000..0fc9b2dc8 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-missing-warning @@ -0,0 +1,42 @@ +#! /bin/sh + +# Test a "missing-warning" GCC bug, using environment variables set in +# several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: compilation failed for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'warning' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` warning detected for ${MSGID}" + exit $REG_PASS +fi + +echo "`date` no warning for ${MSGID}" +exit $REG_FAIL diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-rejects-valid b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-rejects-valid new file mode 100755 index 000000000..5672a0dfe --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-rejects-valid @@ -0,0 +1,48 @@ +#! /bin/sh + +# Test a "rejects-valid" GCC bug, using environment variables set in +# several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -eq 0 ]; then + echo "`date` test compiled successfully for ${MSGID}" + exit $REG_PASS +fi + +grep -q 'No such file or directory' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: missing file for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'error' ${LOG} +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: no error message for ${MSGID}" + exit $REG_ERROR +fi + +echo "`date` compilation failed for ${MSGID}" +exit $REG_FAIL diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-segfault-on-valid-code b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-segfault-on-valid-code new file mode 100755 index 000000000..0a1b1b722 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-segfault-on-valid-code @@ -0,0 +1,49 @@ +#! /bin/sh + +# Test an "ice-on-valid-code" GCC bug that results in a compiler +# segfault, using environment variables set in several reghunt scripts +# and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -eq 0 ]; then + echo "`date` test compiled successfully for ${MSGID}" + exit $REG_PASS +fi + +grep -q 'No such file or directory' ${LOG} +if [ $? -eq 0 ]; then + echo "`date` unexpected failure: missing file for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'egmentation fault' ${LOG} +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: no segfault message for ${MSGID}" + exit $REG_ERROR +fi + +echo "`date` compilation failed for ${MSGID}" +exit $REG_FAIL diff --git a/gcc-4.8.3/contrib/reghunt/bin/gcc-test-wrong-code b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-wrong-code new file mode 100755 index 000000000..2c0398bea --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/gcc-test-wrong-code @@ -0,0 +1,42 @@ +#! /bin/sh + +# Test a "wrong-code" GCC bug, using environment variables set in +# several reghunt scripts and configuration files. +# +# Copyright (C) 2007 Free Software Foundation. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: test compilation failed for ${MSGID}" + exit $REG_ERROR +fi + +./a.out >> ${LOG} 2>&1 +if [ $? -ne 0 ]; then + echo "`date` test run aborted for ${MSGID}" + exit $REG_FAIL +fi + +echo "`date` test ran successfully for ${MSGID}" +exit $REG_PASS diff --git a/gcc-4.8.3/contrib/reghunt/bin/reg-hunt b/gcc-4.8.3/contrib/reghunt/bin/reg-hunt new file mode 100755 index 000000000..aa0ea61ee --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/reg-hunt @@ -0,0 +1,363 @@ +#! /bin/bash + +#set -x + +######################################################################## +# +# File: reg-hunt +# Author: Janis Johnson <janis187@us.ibm.com> +# Date: 2003/08/19 +# +# Search for the patch identifier for which results for a test changed, +# using a binary search. The functionality for getting sources, +# building the component to test, and running the test are in other +# scripts that are run from here. Before the search begins, we verify +# that we get the expected behavior for the first and last patch +# identifiers. +# +# Define these in a file whose name is the argument to this script: +# LOW_PATCH: Patch identifier. +# HIGH_PATCH: Patch identifier. +# REG_UPDATE: Pathname of script to update your source tree; returns +# zero for success, nonzero for failure. +# REG_BUILD: Pathname of script to build enough of the product to run +# the test; returns zero for success, nonzero for failure. +# REG_TEST: Pathname of script to run the test; returns 1 if we +# should search later patches, 0 if we should search +# earlier patches, and something else if there was an +# unexpected failure. +# Optional: +# REG_REPORT Pathname of script to call at the end with the id of the +# patch that caused the change in behavior. +# REG_FINISH Pathname of script to call at the end with the two final +# patch identifiers as arguments. +# REG_NEWMID Pathname of script to call when a build has failed, with +# arguments of the failed id and the current low and high +# SKIP_LOW If 1, skip verifying the low patch identifier of the +# range; define this only if you're restarting and have +# already tested the low patch. +# SKIP_HIGH If 1, skip verifying the high patch identifier of the +# range; define this only if you're restarting and have +# already tested the high patch. +# FIRST_MID Use this as the first midpoint, to avoid a midpoint that +# is known not to build. +# VERBOSITY Default is 0, to print only errors and final message. +# DATE_IN_MSG If set to anything but 0, include the time and date in +# messages. +# +# +# +# Copyright (c) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. +# +######################################################################## + +######################################################################## +# Functions +######################################################################## + +# Issue a message if its verbosity level is high enough. + +msg() { + test ${1} -gt ${VERBOSITY} && return + + if [ "x${DATE_IN_MSG}" = "x" ]; then + echo "${2}" + else + echo "`date` ${2}" + fi +} + +# Issue an error message and exit with a non-zero status. If there +# is a valid current range whose end points have been tested, report +# it so the user can start again from there. + +error() { + msg 0 "error: ${1}" + test ${VALID_RANGE} -eq 1 && \ + echo "current range:" + echo "LOW_PATCH=${LATER_THAN}" + echo "HIGH_PATCH=${EARLIER_THAN}" + exit 1 +} + +# Build the components to test using sources as of a particular patch +# and run a test case. Pass each of the scripts the patch identifier +# that we're testing; the first one needs it, the others can ignore it +# if they want. + +process_patch () { + TEST_ID=${1} + + # If we're keeping track of known failures, see if TEST_ID is one and + # if so, don't bother updating sources and trying to build. + + FAILS=0 + SKIP=0 + if [ ${SKIP_FAILURES} -eq 1 ]; then + ${REG_CHECKFAIL} ${TEST_ID} + if [ $? -eq 0 ]; then + msg 1 "skipping ${TEST_ID}; it is a known build failure" + FAILS=1 + SKIP=1 + fi + fi + + if [ ${FAILS} -eq 0 ]; then + ${REG_UPDATE} ${TEST_ID} || error "source update failed for ${TEST_ID}" + ${REG_BUILD} ${TEST_ID} + if [ $? -ne 0 ]; then + FAILS=1 + msg 1 "build failed for ${TEST_ID}" + if [ ${SKIP_FAILURES} -eq 1 ]; then + ${REG_RECORDFAIL} ${TEST_ID} + fi + fi + fi + + if [ ${FAILS} -eq 0 ]; then + ${REG_TEST} ${TEST_ID} + LATER=$? + if [ $LATER -ne 0 -a $LATER -ne 1 ]; then + msg 0 "unexpected test failure for ${TEST_ID}" + exit 1 + fi + else + + # The build failed, or this patch is already known to fail to build. + # If it's an endpoint, or if we don't have a way to recover from + # build failures, quit now. + + if [ ${SKIP} -eq 0 ]; then + if [ "x${REG_NEWMID}" == "x" \ + -o ${TEST_ID} -eq ${LATER_THAN} \ + -o ${TEST_ID} -eq ${EARLIER_THAN} ]; then + error "build failed for ${TEST_ID}" + fi + fi + + # Try to find a new patch to try within the current range. + + FIRST_MID=`${REG_NEWMID} ${LATER_THAN} ${EARLIER_THAN}` + if [ ${FIRST_MID} -eq 0 ]; then + + # The heuristics in the tool ran out of patches to try next; + # let the user handle it from here.+ + error "build failed for ${TEST_ID}, could not find new candidate" + fi + msg 1 "using ${FIRST_MID}, between ${LATER_THAN} and ${EARLIER_THAN}" + fi + + # Return with a valid LATER value or a new ID to try in FIRST_MID. +} + +# Get the number of a patch within the range. It's not actually the +# middle one, but the one that might minimize the number of checks. + +get_mid_special() { + LOW=$1 + HIGH=$2 + + let DIFF=HIGH-LOW + M=1 + POWER2=1 + while + [ $POWER2 -lt $DIFF ] + do + let M=POWER2 + let POWER2=POWER2*2 + done + let MID=LOW+M +} + +# Get the number of the patch in the middle of the range. + +get_mid () { + LOW=$1 + HIGH=$2 + + let DIFF=HIGH-LOW + let M=DIFF/2 + let MID=LOW+M +} + +# Perform a binary search on patch identifiers within the range +# specified by the arguments. + +search_patches () { + LOW=$1 + HIGH=$2 + + # Get an identifier within the range. The user can override the + # initial mid patch if it is known to have problems, e.g., if a + # build fails for that patch. + + if [ ${FIRST_MID} -ne 0 ]; then + MID=${FIRST_MID} + FIRST_MID=0 + let DIFF=HIGH-LOW + else + get_mid $LOW $HIGH + fi + + while [ ${DIFF} -gt 1 ]; do + TEST_ID="${MID}" + + # Test it. + + process_patch ${TEST_ID} + + # FIRST_MID being set is a signal that the build failed and we + # should start over again. + + test ${FIRST_MID} -ne 0 && return + + # Narrow the search based on the outcome of testing TEST_ID. + + if [ ${LATER} -eq 1 ]; then + msg 1 "search patches later than ${TEST_ID}" + LATER_THAN=${TEST_ID} + let LOW=MID + else + msg 1 "search patches earlier than ${TEST_ID}" + EARLIER_THAN=${TEST_ID} + let HIGH=MID + fi + + get_mid $LOW $HIGH + done +} + +######################################################################## +# Main program (so to speak) +######################################################################## + +# The error function uses this. + +VALID_RANGE=0 + +# Process the configuration file. + +if [ $# != 1 ]; then + echo Usage: $0 config_file + exit 1 +fi + +CONFIG=${1} +if [ ! -f ${CONFIG} ]; then + error "configuration file ${CONFIG} does not exist" +fi + +# OK, the config file exists. Source it, make sure required parameters +# are defined and their files exist, and give default values to optional +# parameters. + +. ${CONFIG} + +test "x${REG_UPDATE}" = "x" && error "REG_UPDATE is not defined" +test "x${REG_BUILD}" = "x" && error "REG_BUILD is not defined" +test "x${REG_TEST}" = "x" && error "REG_TEST is not defined" +test -x ${REG_TEST} || error "REG_TEST is not an executable file" +test "x${SKIP_LOW}" = "x" && SKIP_LOW=0 +test "x${SKIP_HIGH}" = "x" && SKIP_HIGH=0 +test "x${VERBOSITY}" = "x" && VERBOSITY=0 +test "x${REG_FINISH}" = "x" && REG_FINISH=true +test "x${REG_REPORT}" = "x" && REG_REPORT=true + +msg 2 "LOW_PATCH = ${LOW_PATCH}" +msg 2 "HIGH_PATCH = ${HIGH_PATCH}" +msg 2 "REG_UPDATE = ${REG_UPDATE}" +msg 2 "REG_BUILD = ${REG_BUILD}" +msg 2 "REG_TEST = ${REG_TEST}" +msg 2 "REG_NEWMID = ${REG_NEWMID}" +msg 2 "SKIP_LOW = ${SKIP_LOW}" +msg 2 "SKIP_HIGH = ${SKIP_HIGH}" +msg 2 "FIRST_MID = ${FIRST_MID}" +msg 2 "VERBOSITY = ${VERBOSITY}" + +# If REG_NEWMID was defined, assume that we're skipping known failures +# and adding to the list for new failures. If the list of failures +# doesn't exist, create it. We use a different flag, SKIP_FAILURES, +# to make it easier to separate the flag from REG_NEWMID if we want +# to change the usage later. + +if [ "x${REG_NEWMID}" != "x" ]; then + touch ${REG_FAILLIST} + SKIP_FAILURES=1 +else + SKIP_FAILURES=0 +fi + +# If FIRST_MID was defined, make sure it's in the range. + +if [ "x${FIRST_MID}" != "x" ]; then + test ${FIRST_MID} -le ${LOW_PATCH} && \ + error "FIRST_MID id is lower than LOW_PATCH" + test ${FIRST_MID} -ge ${HIGH_PATCH} && \ + error "FIRST_MID is higher than HIGH_PATCH" +else + FIRST_MID=0 +fi + +# Keep track of the bounds of the range where the test behavior changes. + +LATER_THAN=${LOW_PATCH} +EARLIER_THAN=${HIGH_PATCH} +LATER=1 + +msg 1 "LATER_THAN = ${LATER_THAN}" +msg 1 "EARLIER_THAN = ${EARLIER_THAN}" + +# Verify that the range isn't backwards. + +test ${LOW_PATCH} -lt ${HIGH_PATCH} || \ + error "patch identifier range is backwards" + +# Verify that the first and last patches in the range get the results we +# expect. If not, quit, because any of several things could be wrong. + +if [ ${SKIP_HIGH} -eq 0 ]; then + process_patch ${EARLIER_THAN} + test ${LATER} -ne 0 && \ + error "unexpected result for high patch ${EARLIER_THAN}" + msg 1 "result for high patch ${EARLIER_THAN} is as expected" +fi + +if [ ${SKIP_LOW} -eq 0 ]; then + process_patch ${LATER_THAN} + test ${LATER} -ne 1 && \ + error "unexpected result for low patch ${LATER_THAN}" + msg 1 "result for low patch ${LATER_THAN} is as expected" +fi + +# Search within the range, now that we know that the end points are valid. +# If the build failed then FIRST_MID is set to a new patch to try. + +VALID_RANGE=1 +while true; do + search_patches ${LATER_THAN} ${EARLIER_THAN} + test ${FIRST_MID} -eq 0 && break +done + +# Report where the test behavior changes. + +echo "Test result changes with id ${EARLIER_THAN}" +${REG_REPORT} ${EARLIER_THAN} + +# Invoke the optional script to verify the result and report additional +# information about changes between the two patches. + +${REG_FINISH} ${LATER_THAN} ${EARLIER_THAN} diff --git a/gcc-4.8.3/contrib/reghunt/bin/reg-newmid b/gcc-4.8.3/contrib/reghunt/bin/reg-newmid new file mode 100755 index 000000000..2a6b57362 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/reg-newmid @@ -0,0 +1,86 @@ +#! /bin/sh + +# The build failed for and identifier in the range bwetween LOW and HIGH. +# Find a new patch id to try within that range. +# +# It's meant to be easy to modify the heuristics used to select the +# next patch to try by adding to or rearranging the patches listed in +# MIDLIST. Known failures are recorded in ${REG_FAILLIST}. +# +# A nifty improvement would be to record known ranges of failure as +# ranges, and then pick revisions just before and just after the range. +# +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. + +LOW=$1 +HIGH=$2 + +MIDLIST="" + +let MID01=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH +let MID01=MID01/12 +let MID02=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH +let MID02=MID02/12 +let MID03=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH +let MID03=MID03/12 +let MID04=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH +let MID04=MID04/12 +let MID05=LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH +let MID05=MID05/12 +let MID06=LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH +let MID06=MID06/12 +let MID07=LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH +let MID07=MID07/12 +let MID08=LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH +let MID08=MID08/12 +let MID09=LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH +let MID09=MID09/12 +let MID10=LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH +let MID10=MID10/12 +let MID11=LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH +let MID11=MID11/12 + +# Look in this order; MID has already been done: +# +# LOW--10---7---6---3---2---MID---1---4---5---8---9---HIGH + +MIDLIST="${MIDLIST} ${MID07}" +MIDLIST="${MIDLIST} ${MID05}" +MIDLIST="${MIDLIST} ${MID04}" +MIDLIST="${MIDLIST} ${MID08}" +MIDLIST="${MIDLIST} ${MID09}" +MIDLIST="${MIDLIST} ${MID03}" +MIDLIST="${MIDLIST} ${MID02}" +MIDLIST="${MIDLIST} ${MID10}" +MIDLIST="${MIDLIST} ${MID11}" +MIDLIST="${MIDLIST} ${MID01}" + +for MID in ${MIDLIST} +do + # Skip this if it's the low endpoint. + if [ ${MID} != ${LOW} ]; then + # Is this patch already known to fail? + ${REG_CHECKFAIL} ${MID} + if [ $? -ne 0 ]; then + echo ${MID} + exit 0 + fi + fi +done + +echo 0 +exit 1 diff --git a/gcc-4.8.3/contrib/reghunt/bin/reg-test b/gcc-4.8.3/contrib/reghunt/bin/reg-test new file mode 100755 index 000000000..622a65461 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/bin/reg-test @@ -0,0 +1,152 @@ +#! /bin/bash + +#set -x + +######################################################################## +# +# File: reg-test +# Author: Janis Johnson +# Date: 2005/09/08 +# +# For each of a list of patches, invoke separate tools to update +# sources, do a build, and run one or more tests. +# +# Define these in a file whose name is the argument to this script: +# REG_IDLIST: List of patch identifiers. +# REG_UPDATE: Pathname of script to update the source tree. +# REG_BUILD: Pathname of script to build enough of the product to run +# the test. +# REG_TEST: Pathname of script to run one or more tests. +# Optional: +# VERBOSITY: Default is 0, to print only errors and final message. +# DATE_IN_MSG If set to anything but 0, include the time and date in +# messages +# REG_STOP Pathname of a file whose existence says to quit; default +# is STOP in the current directory. +# +# +# Copyright (c) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# For a copy of the GNU General Public License, write the the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02111-1301, USA. +# +######################################################################## + +######################################################################## +# Functions +######################################################################## + +# Issue a message if its verbosity level is high enough. + +msg() { + test ${1} -gt ${VERBOSITY} && return + + if [ "x${DATE_IN_MSG}" = "x" ]; then + echo "${2}" + else + echo "`${DATE}` ${2}" + fi +} + +# Issue an error message and exit with a nonzero status. + +error() { + msg 0 "error: ${1}" + exit 1 +} + +# Build the components to test using sources as of a particular patch +# and run a test case. Pass each of the scripts the patch identifier +# that we're testing; the first one needs it, the others can ignore it +# if they want. + +process_patch () { + TEST_ID=${1} + + ${REG_UPDATE} ${TEST_ID} + if [ $? -ne 0 ]; then + msg 0 "source update failed for id ${TEST_ID}" + return + fi + ${REG_BUILD} ${TEST_ID} + if [ $? -ne 0 ]; then + msg 0 "build failed for id ${TEST_ID}" + return + fi + ${REG_TEST} "${TEST_ID}" +} + +######################################################################## +# Main program (so to speak) +######################################################################## + +# If DATE isn't defined, use the default date command; the configuration +# file can override this. + +if [ "x${DATE}" = "x" ]; then + DATE=date +fi + +# Process the configuration file. + +if [ $# -ne 1 ]; then + echo Usage: $0 config_file + exit 1 +fi + +CONFIG=${1} +if [ ! -f ${CONFIG} ]; then + error "configuration file ${CONFIG} does not exist" +fi + +# OK, the config file exists. Source it, make sure required parameters +# are defined and their files exist, and give default values to optional +# parameters. + +. ${CONFIG} + +test "x${REG_IDLIST}" = "x" && error "REG_IDLIST is not defined" +test "x${REG_UPDATE}" = "x" && error "REG_UPDATE is not defined" +test "x${REG_BUILD}" = "x" && error "REG_BUILD is not defined" +test "x${REG_TEST}" = "x" && error "REG_TEST is not defined" +test -x ${REG_TEST} || error "REG_TEST is not an executable file" +test "x${VERBOSITY}" = "x" && VERBOSITY=0 +test "x${REG_STOP}" = "x" && REG_STOP="STOP" + +msg 2 "REG_IDLIST = ${REG_IDLIST}" +msg 2 "REG_UPDATE = ${REG_UPDATE}" +msg 2 "REG_BUILD = ${REG_BUILD}" +msg 2 "REG_TEST = ${REG_TEST}" +msg 2 "VERBOSITY = ${VERBOSITY}" + +# Process each patch identifier in the list. + +for TEST_ID in $REG_IDLIST; do + + # If a file called STOP appears, stop; this allows a clean way to + # interrupt a search. + + if [ -f ${REG_STOP} ]; then + msg 0 "STOP file detected" + rm -f ${REG_STOP} + exit 1 + fi + + # Process the new patch. + + msg 2 "process id ${TEST_ID}" + process_patch ${TEST_ID} +done + +msg 1 "done" diff --git a/gcc-4.8.3/contrib/reghunt/date_based/README b/gcc-4.8.3/contrib/reghunt/date_based/README new file mode 100644 index 000000000..c674ffc6c --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/date_based/README @@ -0,0 +1,16 @@ +This directory contains scripts that are used for identifying the +patch that introduced a regression. General information about such +searches is covered in http://gcc.gnu.org/bugs/reghunt.html. + + reg_search searches for a small time interval within a range of + dates in which results for a test changed, using a binary search. + The functionality for getting sources, building the component to + test, and running the test are in other scripts that are run from + here. + + reg_periodic invokes separate tools (the same scripts invoked by + reg_search) over a range of dates at specified intervals. + + reg_test_template shows the format for the script that runs a test + and determines whether to continue the search with a later or + earlier date. diff --git a/gcc-4.8.3/contrib/reghunt/date_based/reg_periodic b/gcc-4.8.3/contrib/reghunt/date_based/reg_periodic new file mode 100755 index 000000000..a77567d4d --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/date_based/reg_periodic @@ -0,0 +1,171 @@ +#! /bin/bash + +######################################################################## +# +# File: reg_periodic +# Author: Janis Johnson +# Date: 2002/12/28 +# +# Over a range of dates at specified intervals, invoke separate tools to +# update sources, do a build, and run one or more tests. +# +# Define these in a file whose name is the argument to this script: +# LOW_DATE: Date string recognized by the date command. +# HIGH_DATE: Date string recognized by the date command. +# INTERVAL: Time (in seconds) between dates for which to build. +# REG_UPDATE: Pathname of script to update your source tree. +# REG_BUILD: Pathname of script to build enough of the product to run +# the test. +# REG_TEST: Pathname of script to run one or more tests. +# Optional: +# VERBOSITY: Default is 0, to print only errors and final message. +# DATE_IN_MSG If set to anything but 0, include the time and date in +# messages +# REG_STOP Pathname of a file whose existence says to quit; default +# is STOP in the current directory. +# +# +# Copyright (c) 2002, 2003, 2005, 2009, 2010 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. +# +######################################################################## + +######################################################################## +# Functions +######################################################################## + +# Issue a message if its verbosity level is high enough. + +msg() { + test ${1} -gt ${VERBOSITY} && return + + if [ "x${DATE_IN_MSG}" = "x" ]; then + echo "${2}" + else + echo "`${DATE}` ${2}" + fi +} + +# Issue an error message and exit with a nonzero status. + +error() { + msg 0 "error: ${1}" + exit 1 +} + +# Turn seconds since the epoch into a date we can use with source +# control tools and report to the user. + +make_date() { + MADE_DATE=`${DATE} -u +"%Y-%m-%d %H:%M %Z" --date "1970-01-01 ${1} seconds"` \ + || error "make_date: date command failed" +} + +# Build the components to test using sources as of a particular date and +# run a test case. Pass each of the scripts the date that we're +# testing; the first one needs it, the others can ignore it if they want. + +process_date() { + TEST_DATE="${1}" + + ${REG_UPDATE} "${TEST_DATE}" + if [ $? -ne 0 ]; then + msg 0 "source update failed for ${TEST_DATE}" + return + fi + ${REG_BUILD} "${TEST_DATE}" + if [ $? -ne 0 ]; then + msg 0 "build failed for ${TEST_DATE}" + return + fi + ${REG_TEST} "${TEST_DATE}" +} + +######################################################################## +# Main program (so to speak) +######################################################################## + +# If DATE isn't defined, use the default date command; the configuration +# file can override this. + +if [ "x${DATE}" = "x" ]; then + DATE=date +fi + +# Process the configuration file. + +if [ $# -ne 1 ]; then + echo Usage: $0 config_file + exit 1 +fi + +CONFIG=${1} +if [ ! -f ${CONFIG} ]; then + error "configuration file ${CONFIG} does not exist" +fi + +# OK, the config file exists. Source it, make sure required parameters +# are defined and their files exist, and give default values to optional +# parameters. + +. ${CONFIG} + +test "x${REG_UPDATE}" = "x" && error "REG_UPDATE is not defined" +test "x${REG_BUILD}" = "x" && error "REG_BUILD is not defined" +test "x${REG_TEST}" = "x" && error "REG_TEST is not defined" +test "x${INTERVAL}" = "x" && error "INTERVAL is not defined" +test -x ${REG_TEST} || error "REG_TEST is not an executable file" +test "x${VERBOSITY}" = "x" && VERBOSITY=0 +test "x${REG_STOP}" = "x" && REG_STOP="STOP" + +msg 2 "LOW_DATE = ${LOW_DATE}" +msg 2 "HIGH_DATE = ${HIGH_DATE}" +msg 2 "INTERVAL = ${INTERVAL}" +msg 2 "REG_UPDATE = ${REG_UPDATE}" +msg 2 "REG_BUILD = ${REG_BUILD}" +msg 2 "REG_TEST = ${REG_TEST}" +msg 2 "VERBOSITY = ${VERBOSITY}" + +# Change the dates into seconds since the epoch. This uses an extension +# in GNU date. + +LOW_DATE=`${DATE} +%s --date "${LOW_DATE}"` || \ + error "date command failed for \"${LOW_DATE}\"" +HIGH_DATE=`${DATE} +%s --date "${HIGH_DATE}"` || \ + error "date command failed for \"${LOW_DATE}\"" + +# Process each date in the range. + +while [ ${LOW_DATE} -le ${HIGH_DATE} ]; do + + # If a file called STOP appears, stop; this allows a clean way to + # interrupt a search. + + if [ -f ${REG_STOP} ]; then + msg 0 "STOP file detected" + rm -f ${REG_STOP} + exit 1 + fi + + # Get a version of the date that is usable by tools and readable + # by people, then process it. + + make_date ${LOW_DATE} + process_date "${MADE_DATE}" + let LOW_DATE=LOW_DATE+INTERVAL +done + +msg 1 "done" diff --git a/gcc-4.8.3/contrib/reghunt/date_based/reg_search b/gcc-4.8.3/contrib/reghunt/date_based/reg_search new file mode 100755 index 000000000..46602054d --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/date_based/reg_search @@ -0,0 +1,300 @@ +#! /bin/bash + +######################################################################## +# +# File: reg_search +# Author: Janis Johnson <janis187@us.ibm.com> +# Date: 2002/12/15 +# +# Search for a small time interval within a range of dates in which +# results for a test changed, using a binary search. The functionality +# for getting sources, building the component to test, and running the +# test are in other scripts that are run from here. Before the search +# begins, we verify that we get the expected behavior for the first and +# last dates. +# +# Define these in a file whose name is the argument to this script: +# LOW_DATE: Date string recognized by the date command (local time). +# HIGH_DATE: Date string recognized by the date command (local time). +# REG_UPDATE: Pathname of script to update your source tree; returns +# zero for success, nonzero for failure. +# REG_BUILD: Pathname of script to build enough of the product to run +# the test; returns zero for success, nonzero for failure. +# REG_TEST: Pathname of script to run the test; returns 1 if we +# should search later dates, 0 if we should search earlier +# dates. +# Optional: +# DELTA: Search to an interval within this many seconds; default +# is one hour (although 300 works well). +# REG_FINISH Pathname of script to call at the end with the two final +# dates as arguments. +# SKIP_LOW If 1, skip verifying the low date of the range; +# define this only if you're restarting and have already +# tested the low date. +# SKIP_HIGH If 1, skip verifying the high date of the range; +# define this only if you're restarting and have already +# tested the high date. +# FIRST_MID Use this as the first midpoint, to avoid a midpoint that +# is known not to build. +# HAS_CHANGES Pathname of script to report whether the current date has +# no differences from one of the ends of the current range +# to skip unnecessary build and testing; default is "true". +# VERBOSITY Default is 0, to print only errors and final message. +# DATE_IN_MSG If set to anything but 0, include the time and date in +# messages. +# +# +# +# Copyright (c) 2002, 2003, 2005, 2009, 2010 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. +# +######################################################################## + +######################################################################## +# Functions +######################################################################## + +# Issue a message if its verbosity level is high enough. + +msg() { + test ${1} -gt ${VERBOSITY} && return + + if [ "x${DATE_IN_MSG}" = "x" ]; then + echo "${2}" + else + echo "`${DATE}` ${2}" + fi +} + +# Issue an error message and exit with a non-zero status. If there +# is a valid current range whose end points have been tested, report +# it so the user can start again from there. + +error() { + msg 0 "error: ${1}" + test ${VALID_RANGE} -eq 1 && \ + echo "current range:" + echo "LOW_DATE=\"${LATER_THAN}\"" + echo "HIGH_DATE=\"${EARLIER_THAN}\"" + exit 1 +} + +# Turn seconds since the epoch into a date we can use with source +# control tools and report to the user. + +make_date() { + MADE_DATE=`${DATE} -u +"%Y-%m-%d %H:%M %Z" --date "1970-01-01 ${1} seconds"` \ + || error "make_date: date command failed" +} + +# Build the components to test using sources as of a particular date and +# run a test case. Pass each of the scripts the date that we're +# testing; the first one needs it, the others can ignore it if they want. + +process_date() { + TEST_DATE="${1}" + + ${REG_UPDATE} "${TEST_DATE}" || error "source update failed for ${TEST_DATE}" + + # If we're already in a valid range, skip this date if there are no + # differences from either end of the range and adjust LATER. + + if [ ${VALID_RANGE} = 1 ]; then + ${HAS_CHANGES} "${TEST_DATE}" "${LATER_THAN}" "${EARLIER_THAN}" + RET=$? + case ${RET} in + 0) ;; + 1) LATER=1; return;; + 2) LATER=0; return;; + *) error "process_date: unexpected return value from ${HAS_CHANGES}";; + esac + fi + + ${REG_BUILD} "${TEST_DATE}" || error "build failed for ${TEST_DATE}" + ${REG_TEST} "${TEST_DATE}" + LATER=$? +} + +# Perform a binary search on dates within the range specified by +# the arguments, bounded by the number of seconds in DELTA. + +search_dates() { + let LOW=$1 + let HIGH=$2 + let DIFF=HIGH-LOW + + # Get the date in the middle of the range; MID is in seconds since + # the epoch, DATE is readable by humans and tools. The user can + # override the initial mid date if it is known to have problems, + # e.g., if a build fails for that date. + + if [ ${FIRST_MID} -ne 0 ]; then + let MID=${FIRST_MID} + else + let MID=LOW/2+HIGH/2 + fi + + while [ ${DIFF} -ge ${DELTA} ]; do + make_date ${MID} + TEST_DATE="${MADE_DATE}" + + # Test it. + + process_date "${TEST_DATE}" + + # Narrow the search based on the outcome of testing DATE. + + if [ ${LATER} -eq 1 ]; then + msg 1 "search dates later than \"${TEST_DATE}\"" + LATER_THAN="${TEST_DATE}" + let LOW=MID + else + msg 1 "search dates earlier than \"${TEST_DATE}\"" + EARLIER_THAN="${TEST_DATE}" + let HIGH=MID + fi + + let DIFF=HIGH-LOW + let MID=LOW/2+HIGH/2 + done +} + +######################################################################## +# Main program (so to speak) +######################################################################## + +# If DATE isn't defined, use the default date command; the configuration +# file can override this. + +if [ "x${DATE}" = "x" ]; then + DATE=date +fi + +# The error function uses this. + +VALID_RANGE=0 + +# Process the configuration file. + +if [ $# != 1 ]; then + echo Usage: $0 config_file + exit 1 +fi + +CONFIG=${1} +if [ ! -f ${CONFIG} ]; then + error "configuration file ${CONFIG} does not exist" +fi + +# OK, the config file exists. Source it, make sure required parameters +# are defined and their files exist, and give default values to optional +# parameters. + +. ${CONFIG} + +test "x${REG_UPDATE}" = "x" && error "REG_UPDATE is not defined" +test "x${REG_BUILD}" = "x" && error "REG_BUILD is not defined" +test "x${REG_TEST}" = "x" && error "REG_TEST is not defined" +test -x ${REG_TEST} || error "REG_TEST is not an executable file" +test "x${SKIP_LOW}" = "x" && SKIP_LOW=0 +test "x${SKIP_HIGH}" = "x" && SKIP_HIGH=0 +test "x${DELTA}" = "x" && DELTA=3600 +test "x${VERBOSITY}" = "x" && VERBOSITY=0 +test "x${HAS_CHANGES}" = "x" && HAS_CHANGES=true +test "x${REG_FINISH}" = "x" && REG_FINISH=true + +msg 2 "LOW_DATE = ${LOW_DATE}" +msg 2 "HIGH_DATE = ${HIGH_DATE}" +msg 2 "REG_UPDATE = ${REG_UPDATE}" +msg 2 "REG_BUILD = ${REG_BUILD}" +msg 2 "REG_TEST = ${REG_TEST}" +msg 2 "SKIP_LOW = ${SKIP_LOW}" +msg 2 "SKIP_HIGH = ${SKIP_HIGH}" +msg 2 "FIRST_MID = ${FIRST_MID}" +msg 2 "VERBOSITY = ${VERBOSITY}" +msg 2 "DELTA = ${DELTA}" + +# Verify that DELTA is at least two minutes. + +test ${DELTA} -lt 120 && \ + error "DELTA is ${DELTA}, must be at least 120 (two minutes)" + +# Change the dates into seconds since the epoch. This uses an extension +# in GNU date. + +LOW_DATE=`${DATE} +%s --date "${LOW_DATE}"` || \ + error "date command failed for \"${LOW_DATE}\"" +HIGH_DATE=`${DATE} +%s --date "${HIGH_DATE}"` || \ + error "date command failed for \"${LOW_DATE}\"" + +# If FIRST_MID was defined, convert it and make sure it's in the range. + +if [ "x${FIRST_MID}" != "x" ]; then + FIRST_MID=`${DATE} +%s --date "${FIRST_MID}"` || \ + error "date command failed for \"${FIRST_MID}\"" + test ${FIRST_MID} -le ${LOW_DATE} && \ + error "FIRST_MID date is earlier than LOW_DATE" + test ${FIRST_MID} -ge ${HIGH_DATE} && \ + error "FIRST_MID is later than HIGH_DATE" +else + FIRST_MID=0 +fi + +# Keep track of the bounds of the range where the test behavior changes, +# using a human-readable version of each date. + +make_date ${LOW_DATE} +LATER_THAN="${MADE_DATE}" +make_date ${HIGH_DATE} +EARLIER_THAN="${MADE_DATE}" + +msg 2 "LATER_THAN = ${LATER_THAN}" +msg 2 "EARLIER_THAN = ${EARLIER_THAN}" + +# Verify that the range isn't backwards. + +test ${LOW_DATE} -lt ${HIGH_DATE} || error "date range is backwards" + +# Verify that the first and last date in the range get the results we +# expect. If not, quit, because any of several things could be wrong. + +if [ ${SKIP_LOW} -eq 0 ]; then + process_date "${LATER_THAN}" + test ${LATER} -ne 1 && \ + error "unexpected result for low date ${LATER_THAN}" + msg 1 "result for low date is as expected" +fi + +if [ ${SKIP_HIGH} -eq 0 ]; then + process_date "${EARLIER_THAN}" + test ${LATER} -ne 0 && \ + error "unexpected result for high date ${EARLIER_THAN}" + msg 1 "result for high date is as expected" +fi + +# Search within the range, now that we know that the end points are valid. + +VALID_RANGE=1 +search_dates ${LOW_DATE} ${HIGH_DATE} + +# Report the range that's left to investigate. + +echo "Continue search between ${LATER_THAN} and ${EARLIER_THAN}" + +# Invoke the optional script to report additional information about +# changes between the two dates. + +${REG_FINISH} "${LATER_THAN}" "${EARLIER_THAN}" diff --git a/gcc-4.8.3/contrib/reghunt/date_based/reg_test_template b/gcc-4.8.3/contrib/reghunt/date_based/reg_test_template new file mode 100755 index 000000000..ab5bbc106 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/date_based/reg_test_template @@ -0,0 +1,41 @@ +#! /bin/sh + +# Template for the test script specified for REG_TEST. + +# Run the test case for a regression search. The argument is the date +# of the sources. The return value is 1 if the binary search should +# continue with later dates, 0 if it should continue with earlier +# dates. + +DATE="${1}" + +# Specify the PR number and the directory where the test should be run. +PR=xxxx +DIR=xxxx + +LOG_DATE="`echo ${DATE} | sed 's/[-: ]/_/g'`" +LOG="${PR}.${LOG_DATE}.out" + +echo "`date` running test for PR ${PR}" +cd ${DIR} + +# Compile the test case with whatever options are needed to trigger the +# error. + +<compiler_to_run> <options> ${PR}.<x> > ${LOG} 2>&1 + +# Some tests will require additional commands to determine whether the +# test passed or failed, such as grepping compiler output for a +# particular message, or running the test and possibly comparing its +# output with the expected output. + +xxxxx + +# The return value depends on whether the last command is expected to be +# zero or nonzero for a passing test, and whether we're looking for a +# regression or for the patch that fixed the bug. + +# Return 1 to continue the search with later dates, 0 for earlier dates. + +test $? -eq 0 && exit 1 +exit 0 diff --git a/gcc-4.8.3/contrib/reghunt/examples/28970.c b/gcc-4.8.3/contrib/reghunt/examples/28970.c new file mode 100644 index 000000000..4b6839b16 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/28970.c @@ -0,0 +1,28 @@ +extern void abort (void); + +int tar (int i) +{ + if (i != 36863) + abort (); + return -1; +} + +void bug(int q, int bcount) +{ + int j = 0; + int outgo = 0; + + while(j != -1) + { + outgo++; + if (outgo > q-1) + outgo = q-1; + j = tar (outgo*bcount); + } +} + +int main(void) +{ + bug(5, 36863); + return 0; +} diff --git a/gcc-4.8.3/contrib/reghunt/examples/28970.config b/gcc-4.8.3/contrib/reghunt/examples/28970.config new file mode 100644 index 000000000..f64b0e687 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/28970.config @@ -0,0 +1,19 @@ +BUGID=28970 +FIND=break +LANG=c +BUILD_KIND=full +BUG_KIND=wrong-code +OPTS="-O2" +REG_CONFOPTS="--disable-bootstrap" + +. ./common.config + +#LOW_PATCH=101 +#HIGH_PATCH=111 + +#msg 0 'NOTE: skipping low patch, already verified' +#SKIP_LOW=1 +#msg 0 'NOTE: skipping high patch, already verified' +#SKIP_HIGH=1 + +#REG_IDLIST="161" diff --git a/gcc-4.8.3/contrib/reghunt/examples/28970.list b/gcc-4.8.3/contrib/reghunt/examples/28970.list new file mode 100644 index 000000000..87b68f4d4 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/28970.list @@ -0,0 +1,324 @@ +1|99687|bryce|2005-05-14 00:42:46|trunk +2|99691|kazu|2005-05-14 00:46:12|trunk +3|99692|hp|2005-05-14 02:33:25|trunk +4|99693|kazu|2005-05-14 03:25:44|trunk +5|99694|rguenth|2005-05-14 12:53:20|trunk +6|99695|kazu|2005-05-14 13:05:37|trunk +7|99696|hubicka|2005-05-14 14:24:49|trunk +8|99697|hubicka|2005-05-14 14:27:09|trunk +9|99698|hubicka|2005-05-14 14:32:39|trunk +10|99699|rguenth|2005-05-14 15:42:01|trunk +11|99700|danglin|2005-05-14 17:38:46|trunk +12|99701|danglin|2005-05-14 17:50:00|trunk +13|99702|danglin|2005-05-14 17:55:33|trunk +14|99703|danglin|2005-05-14 18:08:20|trunk +15|99704|kazu|2005-05-14 20:22:58|trunk +16|99705|kazu|2005-05-14 20:32:59|trunk +17|99710|kkojima|2005-05-15 02:02:58|trunk +18|99711|fengwang|2005-05-15 02:45:29|trunk +19|99714|rsandifo|2005-05-15 08:10:10|trunk +20|99715|rsandifo|2005-05-15 08:16:01|trunk +21|99716|aj|2005-05-15 08:25:52|trunk +22|99719|aj|2005-05-15 12:44:42|trunk +23|99720|aj|2005-05-15 12:49:45|trunk +24|99721|aj|2005-05-15 13:25:19|trunk +25|99722|aj|2005-05-15 15:33:12|trunk +26|99723|aj|2005-05-15 15:37:18|trunk +27|99724|aj|2005-05-15 15:38:21|trunk +28|99726|aj|2005-05-15 15:50:09|trunk +29|99728|aj|2005-05-15 16:35:44|trunk +30|99729|aj|2005-05-15 16:36:40|trunk +31|99731|dberlin|2005-05-15 17:05:52|trunk +32|99732|aj|2005-05-15 17:06:19|trunk +33|99733|tromey|2005-05-15 17:07:20|trunk +34|99735|aj|2005-05-15 17:33:14|trunk +35|99736|aj|2005-05-15 17:39:35|trunk +36|99737|aj|2005-05-15 17:40:00|trunk +37|99738|drow|2005-05-15 18:17:10|trunk +38|99739|tromey|2005-05-15 18:28:29|trunk +39|99740|gdr|2005-05-15 18:28:36|trunk +40|99741|rearnsha|2005-05-15 18:29:32|trunk +41|99742|tromey|2005-05-15 18:31:26|trunk +42|99745|gerald|2005-05-15 20:03:57|trunk +43|99746|tromey|2005-05-15 21:09:45|trunk +44|99747|mmitchel|2005-05-15 22:31:35|trunk +45|99748|mmitchel|2005-05-15 22:33:49|trunk +46|99749|mmitchel|2005-05-15 22:35:39|trunk +47|99750|mmitchel|2005-05-15 22:51:59|trunk +48|99757|billingd|2005-05-16 00:51:38|trunk +49|99759|dberlin|2005-05-16 01:12:07|trunk +50|99760|hjl|2005-05-16 02:11:59|trunk +51|99765|sayle|2005-05-16 04:36:09|trunk +52|99767|bonzini|2005-05-16 08:43:14|trunk +53|99769|paolo|2005-05-16 10:45:59|trunk +54|99773|neroden|2005-05-16 11:58:44|trunk +55|99774|rsandifo|2005-05-16 12:30:06|trunk +56|99775|aj|2005-05-16 13:52:39|trunk +57|99777|kazu|2005-05-16 15:11:33|trunk +58|99778|kazu|2005-05-16 15:18:15|trunk +59|99779|fjahanian|2005-05-16 15:24:09|trunk +60|99782|kazu|2005-05-16 18:10:20|trunk +61|99783|rsandifo|2005-05-16 18:14:03|trunk +62|99785|rth|2005-05-16 18:22:48|trunk +63|99787|kazu|2005-05-16 18:45:55|trunk +64|99789|tromey|2005-05-16 19:01:52|trunk +65|99791|sayle|2005-05-16 19:40:35|trunk +66|99792|tromey|2005-05-16 20:27:48|trunk +67|99794|tromey|2005-05-16 21:00:49|trunk +68|99796|ctice|2005-05-16 21:37:01|trunk +69|99799|mmitchel|2005-05-16 22:52:26|trunk +70|99800|rth|2005-05-16 23:05:45|trunk +71|99801|rth|2005-05-16 23:14:02|trunk +72|99803|hp|2005-05-17 00:07:54|trunk +73|99810|tromey|2005-05-17 01:52:02|trunk +74|99811|rth|2005-05-17 04:33:42|trunk +75|99812|jakub|2005-05-17 06:31:51|trunk +76|99813|jakub|2005-05-17 06:34:48|trunk +77|99814|hp|2005-05-17 06:37:06|trunk +78|99815|jakub|2005-05-17 06:45:49|trunk +79|99816|jakub|2005-05-17 06:48:19|trunk +80|99817|jakub|2005-05-17 06:51:48|trunk +81|99823|bonzini|2005-05-17 07:33:39|trunk +82|99824|rth|2005-05-17 08:15:41|trunk +83|99825|rguenth|2005-05-17 09:00:03|trunk +84|99826|bonzini|2005-05-17 09:55:44|trunk +85|99827|bonzini|2005-05-17 10:26:27|trunk +86|99828|bonzini|2005-05-17 12:10:19|trunk +87|99829|ian|2005-05-17 12:50:32|trunk +88|99830|bernds|2005-05-17 13:10:26|trunk +89|99831|dje|2005-05-17 14:25:07|trunk +90|99832|rguenth|2005-05-17 14:28:49|trunk +91|99833|drow|2005-05-17 15:00:26|trunk +92|99834|drow|2005-05-17 15:12:27|trunk +93|99835|nathan|2005-05-17 15:37:47|trunk +94|99837|law|2005-05-17 16:28:07|trunk +95|99838|nathan|2005-05-17 16:47:49|trunk +96|99839|aj|2005-05-17 16:54:58|trunk +97|99840|hubicka|2005-05-17 16:56:32|trunk +98|99842|aj|2005-05-17 17:02:38|trunk +99|99843|sayle|2005-05-17 18:01:17|trunk +100|99844|mmitchel|2005-05-17 18:25:58|trunk +101|99846|hp|2005-05-17 18:53:11|trunk +102|99847|kazu|2005-05-17 19:10:19|trunk +103|99848|rakdver|2005-05-17 19:41:38|trunk +104|99849|rakdver|2005-05-17 19:48:50|trunk +105|99850|rakdver|2005-05-17 19:55:53|trunk +106|99851|mrs|2005-05-17 19:59:15|trunk +107|99852|mrs|2005-05-17 20:00:33|trunk +108|99853|rakdver|2005-05-17 20:02:56|trunk +109|99854|rakdver|2005-05-17 20:05:07|trunk +110|99855|mrs|2005-05-17 20:05:24|trunk +111|99856|ebotcazou|2005-05-17 20:06:11|trunk +112|99857|mrs|2005-05-17 20:07:08|trunk +113|99858|mrs|2005-05-17 20:11:44|trunk +114|99859|mrs|2005-05-17 20:13:02|trunk +115|99860|rakdver|2005-05-17 20:28:30|trunk +116|99861|hjl|2005-05-17 21:47:13|trunk +117|99862|dberlin|2005-05-17 23:00:18|trunk +118|99877|daney|2005-05-18 01:00:16|trunk +119|99878|kcook|2005-05-18 01:38:46|trunk +120|99879|kcook|2005-05-18 01:49:43|trunk +121|99880|kcook|2005-05-18 02:03:49|trunk +122|99881|kcook|2005-05-18 02:05:35|trunk +123|99882|dberlin|2005-05-18 03:07:44|trunk +124|99884|bonzini|2005-05-18 07:21:07|trunk +125|99885|ebotcazou|2005-05-18 07:22:28|trunk +126|99889|paolo|2005-05-18 08:07:32|trunk +127|99890|ebotcazou|2005-05-18 08:11:04|trunk +128|99892|fengwang|2005-05-18 09:54:21|trunk +129|99893|fengwang|2005-05-18 09:56:46|trunk +130|99896|dberlin|2005-05-18 13:26:20|trunk +131|99897|dberlin|2005-05-18 13:29:38|trunk +132|99899|ian|2005-05-18 13:46:39|trunk +133|99900|tobi|2005-05-18 13:57:48|trunk +134|99901|nathan|2005-05-18 14:10:35|trunk +135|99903|green|2005-05-18 14:20:53|trunk +136|99904|fitzsim|2005-05-18 15:36:07|trunk +137|99906|law|2005-05-18 16:49:49|trunk +138|99908|paolo|2005-05-18 17:26:48|trunk +139|99910|rth|2005-05-18 17:33:33|trunk +140|99916|rsandifo|2005-05-18 18:43:53|trunk +141|99919|tobi|2005-05-18 19:20:31|trunk +142|99920|tobi|2005-05-18 19:21:46|trunk +143|99922|mrs|2005-05-18 20:02:27|trunk +144|99923|rguenth|2005-05-18 20:11:20|trunk +145|99924|geoffk|2005-05-18 20:23:26|trunk +146|99925|tkoenig|2005-05-18 20:24:32|trunk +147|99926|tkoenig|2005-05-18 20:35:25|trunk +148|99927|geoffk|2005-05-18 20:36:02|trunk +149|99928|geoffk|2005-05-18 20:45:26|trunk +150|99930|hubicka|2005-05-18 21:04:17|trunk +151|99933|paolo|2005-05-18 22:11:24|trunk +152|99935|rth|2005-05-18 23:21:17|trunk +153|99936|dpatel|2005-05-18 23:54:36|trunk +154|99941|jsm28|2005-05-19 00:33:47|trunk +155|99942|rth|2005-05-19 01:05:06|trunk +156|99943|rth|2005-05-19 01:10:13|trunk +157|99944|kazu|2005-05-19 03:05:49|trunk +158|99945|kcook|2005-05-19 03:38:34|trunk +159|99946|kcook|2005-05-19 03:45:17|trunk +160|99948|rth|2005-05-19 04:10:09|trunk +161|99949|rth|2005-05-19 04:13:38|trunk +162|99950|rth|2005-05-19 04:24:19|trunk +163|99951|rth|2005-05-19 06:29:45|trunk +164|99952|jbeulich|2005-05-19 06:47:50|trunk +165|99953|ebotcazou|2005-05-19 07:05:45|trunk +166|99957|ebotcazou|2005-05-19 07:12:05|trunk +167|99960|jakub|2005-05-19 07:37:45|trunk +168|99966|bernds|2005-05-19 08:42:26|trunk +169|99967|redi|2005-05-19 08:59:46|trunk +170|99971|rth|2005-05-19 09:42:23|trunk +171|99972|rth|2005-05-19 09:49:55|trunk +172|99974|nickc|2005-05-19 10:28:30|trunk +173|99976|hubicka|2005-05-19 10:38:42|trunk +174|99977|bonzini|2005-05-19 11:16:27|trunk +175|99978|ayers|2005-05-19 12:22:21|trunk +176|99981|rguenth|2005-05-19 19:17:49|trunk +177|99982|pbrook|2005-05-19 20:03:22|trunk +178|99984|jsm28|2005-05-19 20:42:12|trunk +179|99986|rth|2005-05-19 21:28:02|trunk +180|99988|bryce|2005-05-19 21:46:39|trunk +181|99993|bryce|2005-05-19 22:24:26|trunk +182|99996|janis|2005-05-19 23:22:23|trunk +183|99997|janis|2005-05-19 23:23:27|trunk +184|100001|rth|2005-05-20 00:59:02|trunk +185|100002|rth|2005-05-20 01:24:50|trunk +186|100003|rth|2005-05-20 01:26:56|trunk +187|100004|rth|2005-05-20 01:28:35|trunk +188|100005|rth|2005-05-20 02:38:56|trunk +189|100006|rth|2005-05-20 05:00:29|trunk +190|100007|bonzini|2005-05-20 07:10:30|trunk +191|100009|hubicka|2005-05-20 08:05:07|trunk +192|100010|nickc|2005-05-20 08:25:49|trunk +193|100011|paolo|2005-05-20 08:58:23|trunk +194|100013|jbeulich|2005-05-20 14:00:06|trunk +195|100028|hubicka|2005-05-20 21:17:48|trunk +196|100031|mrs|2005-05-20 22:14:16|trunk +197|100035|mrs|2005-05-20 23:42:07|trunk +198|100036|rth|2005-05-20 23:52:46|trunk +199|100040|ebotcazou|2005-05-21 06:44:50|trunk +200|100043|rguenth|2005-05-21 12:35:55|trunk +201|100044|rmathew|2005-05-21 13:57:49|trunk +202|100045|pinskia|2005-05-21 16:57:24|trunk +203|100051|gerald|2005-05-21 21:56:24|trunk +204|100056|mrs|2005-05-22 02:41:42|trunk +205|100057|aj|2005-05-22 06:55:21|trunk +206|100058|ebotcazou|2005-05-22 07:34:37|trunk +207|100066|gdr|2005-05-22 17:01:02|trunk +208|100068|fxcoudert|2005-05-22 21:17:42|trunk +209|100070|fxcoudert|2005-05-22 22:12:48|trunk +210|100074|sayle|2005-05-23 03:20:19|trunk +211|100075|jbeulich|2005-05-23 06:42:19|trunk +212|100077|ebotcazou|2005-05-23 07:09:03|trunk +213|100078|nickc|2005-05-23 08:41:57|trunk +214|100080|hubicka|2005-05-23 12:37:47|trunk +215|100081|uweigand|2005-05-23 16:43:06|trunk +216|100087|redi|2005-05-23 21:53:46|trunk +217|100088|jason|2005-05-23 23:02:53|trunk +218|100092|law|2005-05-24 02:54:06|trunk +219|100093|nemet|2005-05-24 05:57:46|trunk +220|100095|nickc|2005-05-24 07:45:24|trunk +221|100097|nickc|2005-05-24 09:09:07|trunk +222|100101|paolo|2005-05-24 10:58:22|trunk +223|100102|irar|2005-05-24 11:56:58|trunk +224|100103|law|2005-05-24 14:06:04|trunk +225|100106|pinskia|2005-05-24 19:06:20|trunk +226|100107|rth|2005-05-24 19:18:51|trunk +227|100108|rth|2005-05-24 19:22:03|trunk +228|100109|kazu|2005-05-24 19:57:52|trunk +229|100110|law|2005-05-24 20:19:13|trunk +230|100111|bkoz|2005-05-24 20:28:55|trunk +231|100112|paolo|2005-05-24 20:38:40|trunk +232|100114|fxcoudert|2005-05-24 20:46:54|trunk +233|100115|gdr|2005-05-24 20:48:25|trunk +234|100116|janis|2005-05-24 21:27:38|trunk +235|100117|janis|2005-05-24 21:28:54|trunk +236|100118|janis|2005-05-24 21:40:35|trunk +237|100119|janis|2005-05-24 21:48:15|trunk +238|100120|janis|2005-05-24 21:50:00|trunk +239|100121|mrs|2005-05-24 22:18:43|trunk +240|100122|mrs|2005-05-24 22:20:10|trunk +241|100123|mrs|2005-05-24 22:21:01|trunk +242|100125|mrs|2005-05-24 22:22:33|trunk +243|100126|mrs|2005-05-24 22:24:38|trunk +244|100127|paolo|2005-05-24 22:53:43|trunk +245|100128|kcook|2005-05-24 23:18:46|trunk +246|100129|ian|2005-05-24 23:20:39|trunk +247|100130|janis|2005-05-24 23:41:44|trunk +248|100131|kcook|2005-05-25 00:15:21|trunk +249|100135|dj|2005-05-25 03:59:00|trunk +250|100136|dj|2005-05-25 04:18:19|trunk +251|100137|ebotcazou|2005-05-25 07:04:04|trunk +252|100139|paolo|2005-05-25 09:25:25|trunk +253|100140|reichelt|2005-05-25 09:47:18|trunk +254|100142|paolo|2005-05-25 11:33:43|trunk +255|100143|uweigand|2005-05-25 11:52:13|trunk +256|100144|hubicka|2005-05-25 12:34:01|trunk +257|100145|jakub|2005-05-25 13:10:00|trunk +258|100146|uweigand|2005-05-25 13:12:05|trunk +259|100149|ian|2005-05-25 13:22:27|trunk +260|100150|dberlin|2005-05-25 14:05:22|trunk +261|100151|bonzini|2005-05-25 14:18:54|trunk +262|100152|kazu|2005-05-25 15:17:12|trunk +263|100153|tromey|2005-05-25 15:23:56|trunk +264|100154|tromey|2005-05-25 15:25:38|trunk +265|100155|mrs|2005-05-25 15:48:44|trunk +266|100156|dberlin|2005-05-25 18:53:25|trunk +267|100157|paolo|2005-05-25 19:33:35|trunk +268|100158|nemet|2005-05-25 20:06:33|trunk +269|100159|uweigand|2005-05-25 20:19:26|trunk +270|100163|tromey|2005-05-25 20:23:01|trunk +271|100164|uweigand|2005-05-25 20:39:31|trunk +272|100167|zlaski|2005-05-25 21:18:43|trunk +273|100168|law|2005-05-25 21:36:24|trunk +274|100171|rth|2005-05-25 22:08:31|trunk +275|100172|rsandifo|2005-05-25 22:19:22|trunk +276|100173|rth|2005-05-25 23:24:07|trunk +277|100174|rth|2005-05-25 23:29:54|trunk +278|100175|zlaski|2005-05-26 00:01:02|trunk +279|100179|zlaski|2005-05-26 00:51:53|trunk +280|100180|mrs|2005-05-26 01:08:04|trunk +281|100181|mrs|2005-05-26 01:53:56|trunk +282|100182|mrs|2005-05-26 02:00:19|trunk +283|100183|mrs|2005-05-26 02:27:50|trunk +284|100184|sayle|2005-05-26 04:38:51|trunk +285|100185|rsandifo|2005-05-26 05:28:04|trunk +286|100187|ian|2005-05-26 05:44:38|trunk +287|100188|sayle|2005-05-26 05:51:22|trunk +288|100189|tkoenig|2005-05-26 06:26:17|trunk +289|100193|bkoz|2005-05-26 07:10:21|trunk +290|100194|aj|2005-05-26 07:27:21|trunk +291|100195|bonzini|2005-05-26 07:58:47|trunk +292|100196|jakub|2005-05-26 08:07:30|trunk +293|100197|bonzini|2005-05-26 08:12:35|trunk +294|100198|bonzini|2005-05-26 08:15:31|trunk +295|100201|reichelt|2005-05-26 13:33:02|trunk +296|100205|paolo|2005-05-26 15:46:48|trunk +297|100206|reichelt|2005-05-26 16:04:37|trunk +298|100208|aj|2005-05-26 16:12:30|trunk +299|100212|davidu|2005-05-26 17:23:35|trunk +300|100218|kazu|2005-05-26 18:15:27|trunk +301|100219|kazu|2005-05-26 18:36:11|trunk +302|100220|aj|2005-05-26 19:10:52|trunk +303|100222|bryce|2005-05-26 21:07:04|trunk +304|100223|law|2005-05-26 21:07:38|trunk +305|100224|aj|2005-05-26 21:12:11|trunk +306|100225|aj|2005-05-26 21:22:01|trunk +307|100226|zlaski|2005-05-26 21:24:29|trunk +308|100229|janis|2005-05-26 21:25:27|trunk +309|100230|aj|2005-05-26 21:40:35|trunk +310|100232|aj|2005-05-26 22:00:56|trunk +311|100233|mrs|2005-05-26 23:19:29|trunk +312|100234|kazu|2005-05-27 00:14:08|trunk +313|100238|sayle|2005-05-27 01:58:07|trunk +314|100239|mrs|2005-05-27 02:38:16|trunk +315|100240|sayle|2005-05-27 02:46:01|trunk +316|100241|mrs|2005-05-27 02:55:21|trunk +317|100242|mrs|2005-05-27 03:36:42|trunk +318|100243|cgd|2005-05-27 04:53:37|trunk +319|100244|aj|2005-05-27 05:06:43|trunk +320|100245|rmathew|2005-05-27 05:11:44|trunk +321|100246|rmathew|2005-05-27 05:15:26|trunk +322|100247|rmathew|2005-05-27 05:22:05|trunk +323|100248|aj|2005-05-27 06:13:54|trunk +324|100249|corsepiu|2005-05-27 07:54:06|trunk diff --git a/gcc-4.8.3/contrib/reghunt/examples/28970.log b/gcc-4.8.3/contrib/reghunt/examples/28970.log new file mode 100644 index 000000000..f93989e7f --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/28970.log @@ -0,0 +1,80 @@ +Mon Feb 16 14:31:45 PST 2009 LATER_THAN = 1 +Mon Feb 16 14:31:45 PST 2009 EARLIER_THAN = 324 +Mon Feb 16 14:31:45 PST 2009 svn checkout begun for id 324, rev 100249 +Mon Feb 16 14:35:14 PST 2009 svn checkout done +Mon Feb 16 14:35:15 PST 2009 building GCC (c) for id 324 +/home/janis/reghunt/bin/gcc-test-wrong-code: line 35: 29069 Aborted ./a.out >> ${LOG} 2>&1 +Mon Feb 16 14:38:53 PST 2009 test run aborted for bug 28970, id 324 +Mon Feb 16 14:38:53 PST 2009 result for high patch 324 is as expected +Mon Feb 16 14:38:53 PST 2009 svn update begun for id 1, rev 99687 +Mon Feb 16 14:39:14 PST 2009 svn update done +Mon Feb 16 14:39:15 PST 2009 building GCC (c) for id 1 +Mon Feb 16 14:42:48 PST 2009 test ran successfully for bug 28970, id 1 +Mon Feb 16 14:42:48 PST 2009 result for low patch 1 is as expected +Mon Feb 16 14:42:48 PST 2009 svn update begun for id 162, rev 99950 +Mon Feb 16 14:42:58 PST 2009 svn update done +Mon Feb 16 14:42:59 PST 2009 building GCC (c) for id 162 +/home/janis/reghunt/bin/gcc-test-wrong-code: line 35: 30641 Aborted ./a.out >> ${LOG} 2>&1 +Mon Feb 16 14:46:36 PST 2009 test run aborted for bug 28970, id 162 +Mon Feb 16 14:46:36 PST 2009 search patches earlier than 162 +Mon Feb 16 14:46:36 PST 2009 svn update begun for id 81, rev 99823 +Mon Feb 16 14:46:49 PST 2009 svn update done +Mon Feb 16 14:46:50 PST 2009 building GCC (c) for id 81 +Mon Feb 16 14:50:23 PST 2009 test ran successfully for bug 28970, id 81 +Mon Feb 16 14:50:23 PST 2009 search patches later than 81 +Mon Feb 16 14:50:23 PST 2009 svn update begun for id 121, rev 99880 +Mon Feb 16 14:50:29 PST 2009 svn update done +Mon Feb 16 14:50:30 PST 2009 building GCC (c) for id 121 +/home/janis/reghunt/bin/gcc-test-wrong-code: line 35: 32209 Aborted ./a.out >> ${LOG} 2>&1 +Mon Feb 16 14:54:03 PST 2009 test run aborted for bug 28970, id 121 +Mon Feb 16 14:54:03 PST 2009 search patches earlier than 121 +Mon Feb 16 14:54:03 PST 2009 svn update begun for id 101, rev 99846 +Mon Feb 16 14:54:10 PST 2009 svn update done +Mon Feb 16 14:54:10 PST 2009 building GCC (c) for id 101 +Mon Feb 16 14:57:41 PST 2009 test ran successfully for bug 28970, id 101 +Mon Feb 16 14:57:41 PST 2009 search patches later than 101 +Mon Feb 16 14:57:42 PST 2009 svn update begun for id 111, rev 99856 +Mon Feb 16 14:57:49 PST 2009 svn update done +Mon Feb 16 14:57:49 PST 2009 building GCC (c) for id 111 +/home/janis/reghunt/bin/gcc-test-wrong-code: line 35: 1320 Aborted ./a.out >> ${LOG} 2>&1 +Mon Feb 16 15:01:27 PST 2009 test run aborted for bug 28970, id 111 +Mon Feb 16 15:01:27 PST 2009 search patches earlier than 111 +Mon Feb 16 15:01:27 PST 2009 svn update begun for id 106, rev 99851 +Mon Feb 16 15:01:33 PST 2009 svn update done +Mon Feb 16 15:01:33 PST 2009 building GCC (c) for id 106 +/home/janis/reghunt/bin/gcc-test-wrong-code: line 35: 2076 Aborted ./a.out >> ${LOG} 2>&1 +Mon Feb 16 15:05:04 PST 2009 test run aborted for bug 28970, id 106 +Mon Feb 16 15:05:04 PST 2009 search patches earlier than 106 +Mon Feb 16 15:05:05 PST 2009 svn update begun for id 103, rev 99848 +Mon Feb 16 15:05:08 PST 2009 svn update done +Mon Feb 16 15:05:08 PST 2009 building GCC (c) for id 103 +Mon Feb 16 15:08:40 PST 2009 test ran successfully for bug 28970, id 103 +Mon Feb 16 15:08:40 PST 2009 search patches later than 103 +Mon Feb 16 15:08:40 PST 2009 svn update begun for id 104, rev 99849 +Mon Feb 16 15:08:44 PST 2009 svn update done +Mon Feb 16 15:08:44 PST 2009 building GCC (c) for id 104 +Mon Feb 16 15:12:17 PST 2009 test ran successfully for bug 28970, id 104 +Mon Feb 16 15:12:17 PST 2009 search patches later than 104 +Mon Feb 16 15:12:17 PST 2009 svn update begun for id 105, rev 99850 +Mon Feb 16 15:12:21 PST 2009 svn update done +Mon Feb 16 15:12:21 PST 2009 building GCC (c) for id 105 +/home/janis/reghunt/bin/gcc-test-wrong-code: line 35: 4458 Aborted ./a.out >> ${LOG} 2>&1 +Mon Feb 16 15:15:54 PST 2009 test run aborted for bug 28970, id 105 +Mon Feb 16 15:15:54 PST 2009 search patches earlier than 105 +Test result changes with id 105 +------------------------------------------------------------------------ +r99850 | rakdver | 2005-05-17 19:55:53 +0000 (Tue, 17 May 2005) | 9 lines + + * tree-cfg.c (tree_can_merge_blocks_p): Allow phi nodes in the + merged block. + (replace_uses_by): New function. + (tree_merge_blocks): Eliminate the phi nodes in the merged block. + * tree-flow.h (fold_stmt_inplace): Declare. + * tree-ssa-ccp.c (fold_stmt_inplace): New function. + * tree-ssa-dom.c (tree_ssa_dominator_optimize): Update dominance + info after cfg cleanup. + +------------------------------------------------------------------------ + + http://gcc.gnu.org/viewcvs?view=rev&rev=99850 + r99850 | rakdver | 2005-05-17 19:55:53 +0000 (Tue, 17 May 2005) diff --git a/gcc-4.8.3/contrib/reghunt/examples/29106.cc b/gcc-4.8.3/contrib/reghunt/examples/29106.cc new file mode 100644 index 000000000..ba028ba13 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29106.cc @@ -0,0 +1,9 @@ +#include <stdio.h> + +int main() +{ + int* const savepos = sizeof(*savepos) ? 0 : 0; + + // code for the next line is left out! + printf("size of thingy is %d\n", sizeof(*savepos)); +} diff --git a/gcc-4.8.3/contrib/reghunt/examples/29106.config b/gcc-4.8.3/contrib/reghunt/examples/29106.config new file mode 100644 index 000000000..a8723d41c --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29106.config @@ -0,0 +1,18 @@ +BUGID=29106 +FIND=break +LANG=c++ +BUILD_KIND=full +BUG_KIND=wrong-code +OPTS="" + +. ./common.config + +export REG_TEST=${BUGID}.test + +#LOW_PATCH=532 +#HIGH_PATCH=550 + +#msg 0 'NOTE: skipping low patch, already verified' +#SKIP_LOW=1 +#msg 0 'NOTE: skipping high patch, already verified' +#SKIP_HIGH=1 diff --git a/gcc-4.8.3/contrib/reghunt/examples/29106.list b/gcc-4.8.3/contrib/reghunt/examples/29106.list new file mode 100644 index 000000000..15dcb3009 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29106.list @@ -0,0 +1,568 @@ +1|107221|hp|2005-11-19 16:46:24|gcc-4_1-branch +2|107222|hp|2005-11-19 16:47:50|gcc-4_1-branch +3|107224|rguenth|2005-11-19 17:25:41|gcc-4_1-branch +4|107227|jakub|2005-11-19 20:44:07|gcc-4_1-branch +5|107232|hp|2005-11-19 21:58:23|gcc-4_1-branch +6|107233|hp|2005-11-19 21:59:48|gcc-4_1-branch +7|107234|jb|2005-11-19 22:03:41|gcc-4_1-branch +8|107247|schwab|2005-11-20 10:44:27|gcc-4_1-branch +9|107248|toon|2005-11-20 10:47:37|gcc-4_1-branch +10|107250|ebotcazou|2005-11-20 11:27:41|gcc-4_1-branch +11|107253|jsm28|2005-11-20 16:36:21|gcc-4_1-branch +12|107254|jsm28|2005-11-20 16:37:19|gcc-4_1-branch +13|107260|rth|2005-11-20 19:05:43|gcc-4_1-branch +14|107262|rth|2005-11-20 20:38:26|gcc-4_1-branch +15|107272|rth|2005-11-21 00:55:57|gcc-4_1-branch +16|107280|ian|2005-11-21 05:43:32|gcc-4_1-branch +17|107281|kazu|2005-11-21 06:52:01|gcc-4_1-branch +18|107313|bonzini|2005-11-21 17:04:11|gcc-4_1-branch +19|107314|dje|2005-11-21 18:04:14|gcc-4_1-branch +20|107318|paolo|2005-11-21 18:40:52|gcc-4_1-branch +21|107323|ebotcazou|2005-11-21 20:53:50|gcc-4_1-branch +22|107330|joel|2005-11-21 23:28:29|gcc-4_1-branch +23|107332|joel|2005-11-21 23:32:00|gcc-4_1-branch +24|107351|jakub|2005-11-22 10:58:47|gcc-4_1-branch +25|107353|amodra|2005-11-22 13:01:40|gcc-4_1-branch +26|107355|amodra|2005-11-22 13:18:01|gcc-4_1-branch +27|107360|amodra|2005-11-22 14:24:42|gcc-4_1-branch +28|107363|paolo|2005-11-22 14:55:09|gcc-4_1-branch +29|107365|hubicka|2005-11-22 16:56:48|gcc-4_1-branch +30|107367|gdr|2005-11-22 18:08:17|gcc-4_1-branch +31|107374|kazu|2005-11-22 20:53:08|gcc-4_1-branch +32|107378|ebotcazou|2005-11-22 22:37:35|gcc-4_1-branch +33|107397|jvdelisle|2005-11-23 02:28:44|gcc-4_1-branch +34|107399|jvdelisle|2005-11-23 02:30:23|gcc-4_1-branch +35|107400|amodra|2005-11-23 02:32:41|gcc-4_1-branch +36|107404|uros|2005-11-23 08:52:28|gcc-4_1-branch +37|107414|amodra|2005-11-23 10:19:44|gcc-4_1-branch +38|107436|ian|2005-11-23 23:09:14|gcc-4_1-branch +39|107462|jkj|2005-11-24 12:49:42|gcc-4_1-branch +40|107485|bryce|2005-11-25 04:06:22|gcc-4_1-branch +41|107511|aph|2005-11-25 17:20:09|gcc-4_1-branch +42|107514|dje|2005-11-25 19:26:12|gcc-4_1-branch +43|107518|korbb|2005-11-25 20:26:51|gcc-4_1-branch +44|107521|rth|2005-11-25 22:25:59|gcc-4_1-branch +45|107524|reichelt|2005-11-25 23:12:32|gcc-4_1-branch +46|107534|mark|2005-11-26 00:48:29|gcc-4_1-branch +47|107536|ghazi|2005-11-26 01:31:54|gcc-4_1-branch +48|107539|jb|2005-11-26 09:27:22|gcc-4_1-branch +49|107542|sayle|2005-11-26 21:46:19|gcc-4_1-branch +50|107546|rth|2005-11-26 23:04:24|gcc-4_1-branch +51|107569|kargl|2005-11-27 15:51:54|gcc-4_1-branch +52|107572|kargl|2005-11-27 20:27:40|gcc-4_1-branch +53|107596|jakub|2005-11-28 07:17:39|gcc-4_1-branch +54|107609|jkj|2005-11-28 18:10:05|gcc-4_1-branch +55|107612|aoliva|2005-11-28 18:23:54|gcc-4_1-branch +56|107617|jakub|2005-11-28 19:55:15|gcc-4_1-branch +57|107618|jakub|2005-11-28 19:56:27|gcc-4_1-branch +58|107640|aoliva|2005-11-29 00:56:16|gcc-4_1-branch +59|107653|ghazi|2005-11-29 05:17:56|gcc-4_1-branch +60|107666|jakub|2005-11-29 12:01:56|gcc-4_1-branch +61|107675|dje|2005-11-29 18:19:25|gcc-4_1-branch +62|107677|tromey|2005-11-29 18:58:23|gcc-4_1-branch +63|107697|jvdelisle|2005-11-30 02:09:13|gcc-4_1-branch +64|107699|jvdelisle|2005-11-30 02:53:18|gcc-4_1-branch +65|107705|jakub|2005-11-30 08:34:19|gcc-4_1-branch +66|107706|jakub|2005-11-30 08:35:24|gcc-4_1-branch +67|107709|ebotcazou|2005-11-30 08:45:52|gcc-4_1-branch +68|107712|nathan|2005-11-30 10:29:09|gcc-4_1-branch +69|107716|aph|2005-11-30 12:57:37|gcc-4_1-branch +70|107724|law|2005-11-30 17:05:57|gcc-4_1-branch +71|107728|nathan|2005-11-30 17:54:39|gcc-4_1-branch +72|107732|pault|2005-11-30 19:26:23|gcc-4_1-branch +73|107742|jason|2005-11-30 21:40:12|gcc-4_1-branch +74|107747|amodra|2005-12-01 00:10:57|gcc-4_1-branch +75|107761|jkj|2005-12-01 01:54:19|gcc-4_1-branch +76|107763|ghazi|2005-12-01 02:32:58|gcc-4_1-branch +77|107798|pinskia|2005-12-01 03:24:00|gcc-4_1-branch +78|107809|jsm28|2005-12-01 08:22:06|gcc-4_1-branch +79|107810|jsm28|2005-12-01 08:24:08|gcc-4_1-branch +80|107829|green|2005-12-01 20:09:06|gcc-4_1-branch +81|107835|rth|2005-12-01 22:50:31|gcc-4_1-branch +82|107850|kargl|2005-12-02 00:35:41|gcc-4_1-branch +83|107851|jvdelisle|2005-12-02 00:38:36|gcc-4_1-branch +84|107854|kargl|2005-12-02 01:27:18|gcc-4_1-branch +85|107872|amodra|2005-12-02 06:16:21|gcc-4_1-branch +86|107875|jvdelisle|2005-12-02 06:37:32|gcc-4_1-branch +87|107876|uros|2005-12-02 06:43:45|gcc-4_1-branch +88|107893|reichelt|2005-12-02 14:34:34|gcc-4_1-branch +89|107895|fxcoudert|2005-12-02 15:35:47|gcc-4_1-branch +90|107897|fxcoudert|2005-12-02 15:50:30|gcc-4_1-branch +91|107898|fxcoudert|2005-12-02 15:55:14|gcc-4_1-branch +92|107956|jakub|2005-12-02 22:57:03|gcc-4_1-branch +93|107978|mmitchel|2005-12-03 00:54:17|gcc-4_1-branch +94|107979|mmitchel|2005-12-03 00:56:57|gcc-4_1-branch +95|107980|mmitchel|2005-12-03 00:57:34|gcc-4_1-branch +96|107982|jsm28|2005-12-03 01:01:21|gcc-4_1-branch +97|107986|jsm28|2005-12-03 01:03:26|gcc-4_1-branch +98|108011|hp|2005-12-04 13:01:48|gcc-4_1-branch +99|108015|fxcoudert|2005-12-04 18:22:20|gcc-4_1-branch +100|108016|jsm28|2005-12-04 19:28:05|gcc-4_1-branch +101|108035|paolo|2005-12-05 00:34:11|gcc-4_1-branch +102|108037|paolo|2005-12-05 01:58:19|gcc-4_1-branch +103|108043|jakub|2005-12-05 07:49:01|gcc-4_1-branch +104|108064|paolo|2005-12-05 16:39:42|gcc-4_1-branch +105|108068|ebotcazou|2005-12-05 18:54:22|gcc-4_1-branch +106|108079|janis|2005-12-05 22:51:40|gcc-4_1-branch +107|108092|geoffk|2005-12-06 01:01:03|gcc-4_1-branch +108|108098|tromey|2005-12-06 02:25:58|gcc-4_1-branch +109|108104|wilson|2005-12-06 05:41:33|gcc-4_1-branch +110|108111|amodra|2005-12-06 10:02:57|gcc-4_1-branch +111|108116|schwab|2005-12-06 11:28:18|gcc-4_1-branch +112|108118|jsm28|2005-12-06 13:41:23|gcc-4_1-branch +113|108144|tromey|2005-12-07 00:34:36|gcc-4_1-branch +114|108150|pault|2005-12-07 06:20:21|gcc-4_1-branch +115|108157|aldyh|2005-12-07 11:37:53|gcc-4_1-branch +116|108166|doko|2005-12-07 14:58:27|gcc-4_1-branch +117|108170|krebbel|2005-12-07 17:39:38|gcc-4_1-branch +118|108176|uweigand|2005-12-07 19:42:16|gcc-4_1-branch +119|108179|uweigand|2005-12-07 19:58:41|gcc-4_1-branch +120|108181|uweigand|2005-12-07 20:02:40|gcc-4_1-branch +121|108188|reichelt|2005-12-07 21:20:25|gcc-4_1-branch +122|108198|paolo|2005-12-07 23:51:47|gcc-4_1-branch +123|108210|ghazi|2005-12-08 01:32:54|gcc-4_1-branch +124|108216|krebbel|2005-12-08 08:32:34|gcc-4_1-branch +125|108217|krebbel|2005-12-08 08:33:39|gcc-4_1-branch +126|108224|ebotcazou|2005-12-08 09:30:59|gcc-4_1-branch +127|108226|rguenth|2005-12-08 11:24:07|gcc-4_1-branch +128|108230|aph|2005-12-08 13:52:39|gcc-4_1-branch +129|108232|aph|2005-12-08 14:40:48|gcc-4_1-branch +130|108233|aph|2005-12-08 14:44:29|gcc-4_1-branch +131|108234|doko|2005-12-08 15:30:10|gcc-4_1-branch +132|108236|rakdver|2005-12-08 15:44:22|gcc-4_1-branch +133|108239|eedelman|2005-12-08 17:00:26|gcc-4_1-branch +134|108240|eedelman|2005-12-08 17:01:28|gcc-4_1-branch +135|108249|jakub|2005-12-08 21:52:19|gcc-4_1-branch +136|108250|jakub|2005-12-08 21:53:20|gcc-4_1-branch +137|108251|jakub|2005-12-08 21:53:59|gcc-4_1-branch +138|108252|jakub|2005-12-08 21:54:34|gcc-4_1-branch +139|108253|jakub|2005-12-08 21:56:44|gcc-4_1-branch +140|108255|hp|2005-12-08 23:07:31|gcc-4_1-branch +141|108258|amodra|2005-12-08 23:47:48|gcc-4_1-branch +142|108273|hp|2005-12-09 04:00:10|gcc-4_1-branch +143|108275|ths|2005-12-09 08:15:58|gcc-4_1-branch +144|108279|uweigand|2005-12-09 11:26:47|gcc-4_1-branch +145|108314|fxcoudert|2005-12-09 18:50:48|gcc-4_1-branch +146|108319|bernds|2005-12-09 22:45:14|gcc-4_1-branch +147|108323|ghazi|2005-12-09 23:38:19|gcc-4_1-branch +148|108325|ghazi|2005-12-09 23:56:34|gcc-4_1-branch +149|108327|ghazi|2005-12-10 00:04:44|gcc-4_1-branch +150|108349|ghazi|2005-12-10 13:47:29|gcc-4_1-branch +151|108351|danglin|2005-12-10 15:45:43|gcc-4_1-branch +152|108356|ths|2005-12-10 18:28:23|gcc-4_1-branch +153|108373|paolo|2005-12-11 00:43:32|gcc-4_1-branch +154|108376|mmitchel|2005-12-11 04:24:42|gcc-4_1-branch +155|108382|danglin|2005-12-11 16:12:48|gcc-4_1-branch +156|108395|mmitchel|2005-12-12 01:41:16|gcc-4_1-branch +157|108400|amodra|2005-12-12 10:02:51|gcc-4_1-branch +158|108414|mmitchel|2005-12-12 16:30:24|gcc-4_1-branch +159|108423|aph|2005-12-12 17:50:08|gcc-4_1-branch +160|108428|ghazi|2005-12-12 22:37:46|gcc-4_1-branch +161|108445|amodra|2005-12-13 01:16:11|gcc-4_1-branch +162|108449|pbrook|2005-12-13 01:35:37|gcc-4_1-branch +163|108464|jakub|2005-12-13 08:12:16|gcc-4_1-branch +164|108466|jakub|2005-12-13 08:15:07|gcc-4_1-branch +165|108467|jakub|2005-12-13 08:16:24|gcc-4_1-branch +166|108468|jakub|2005-12-13 08:17:18|gcc-4_1-branch +167|108469|jakub|2005-12-13 08:18:54|gcc-4_1-branch +168|108470|jakub|2005-12-13 08:23:16|gcc-4_1-branch +169|108475|aph|2005-12-13 09:44:35|gcc-4_1-branch +170|108483|tkoenig|2005-12-13 21:11:23|gcc-4_1-branch +171|108501|ghazi|2005-12-14 01:57:55|gcc-4_1-branch +172|108507|jakub|2005-12-14 11:01:15|gcc-4_1-branch +173|108522|ghazi|2005-12-14 17:34:21|gcc-4_1-branch +174|108527|tromey|2005-12-14 18:35:37|gcc-4_1-branch +175|108530|ghazi|2005-12-14 18:46:36|gcc-4_1-branch +176|108531|kargl|2005-12-14 18:55:31|gcc-4_1-branch +177|108535|aph|2005-12-14 20:23:19|gcc-4_1-branch +178|108539|jakub|2005-12-14 20:38:31|gcc-4_1-branch +179|108544|uweigand|2005-12-14 23:40:22|gcc-4_1-branch +180|108559|ghazi|2005-12-15 02:00:58|gcc-4_1-branch +181|108561|law|2005-12-15 07:15:56|gcc-4_1-branch +182|108566|paolo|2005-12-15 10:22:19|gcc-4_1-branch +183|108571|paolo|2005-12-15 11:33:48|gcc-4_1-branch +184|108574|hainque|2005-12-15 12:59:26|gcc-4_1-branch +185|108576|ebotcazou|2005-12-15 13:29:14|gcc-4_1-branch +186|108577|hubicka|2005-12-15 13:48:22|gcc-4_1-branch +187|108578|bonzini|2005-12-15 13:59:17|gcc-4_1-branch +188|108579|bonzini|2005-12-15 14:02:02|gcc-4_1-branch +189|108588|ayers|2005-12-15 18:01:17|gcc-4_1-branch +190|108591|tromey|2005-12-15 18:37:35|gcc-4_1-branch +191|108601|jsm28|2005-12-15 22:32:05|gcc-4_1-branch +192|108603|jakub|2005-12-15 22:33:44|gcc-4_1-branch +193|108631|krebbel|2005-12-16 09:02:49|gcc-4_1-branch +194|108640|jakub|2005-12-16 12:07:52|gcc-4_1-branch +195|108643|jakub|2005-12-16 12:14:15|gcc-4_1-branch +196|108645|nathan|2005-12-16 12:27:29|gcc-4_1-branch +197|108646|nathan|2005-12-16 12:30:18|gcc-4_1-branch +198|108647|aph|2005-12-16 12:42:46|gcc-4_1-branch +199|108649|nathan|2005-12-16 12:57:40|gcc-4_1-branch +200|108650|nathan|2005-12-16 13:11:58|gcc-4_1-branch +201|108651|nathan|2005-12-16 13:51:19|gcc-4_1-branch +202|108660|tromey|2005-12-16 17:20:59|gcc-4_1-branch +203|108663|aoliva|2005-12-16 17:28:38|gcc-4_1-branch +204|108667|eedelman|2005-12-16 18:54:33|gcc-4_1-branch +205|108669|ghazi|2005-12-16 19:14:20|gcc-4_1-branch +206|108676|jvdelisle|2005-12-16 20:37:28|gcc-4_1-branch +207|108677|jvdelisle|2005-12-16 20:40:13|gcc-4_1-branch +208|108684|paolo|2005-12-16 21:34:49|gcc-4_1-branch +209|108686|tromey|2005-12-16 21:45:24|gcc-4_1-branch +210|108694|jsm28|2005-12-16 23:33:09|gcc-4_1-branch +211|108718|danglin|2005-12-17 17:27:11|gcc-4_1-branch +212|108744|jvdelisle|2005-12-18 08:24:04|gcc-4_1-branch +213|108745|jvdelisle|2005-12-18 08:32:09|gcc-4_1-branch +214|108750|dorit|2005-12-18 11:20:17|gcc-4_1-branch +215|108754|hubicka|2005-12-18 14:51:53|gcc-4_1-branch +216|108756|uweigand|2005-12-18 15:49:33|gcc-4_1-branch +217|108780|green|2005-12-19 03:00:18|gcc-4_1-branch +218|108789|nathan|2005-12-19 11:45:41|gcc-4_1-branch +219|108797|reichelt|2005-12-19 17:29:41|gcc-4_1-branch +220|108799|bonzini|2005-12-19 17:46:15|gcc-4_1-branch +221|108831|kkojima|2005-12-20 01:45:27|gcc-4_1-branch +222|108836|mmitchel|2005-12-20 04:39:30|gcc-4_1-branch +223|108838|pinskia|2005-12-20 04:51:27|gcc-4_1-branch +224|108839|pinskia|2005-12-20 04:53:06|gcc-4_1-branch +225|108843|mmitchel|2005-12-20 05:34:22|gcc-4_1-branch +226|108850|mmitchel|2005-12-20 08:26:04|gcc-4_1-branch +227|108857|rguenth|2005-12-20 17:23:12|gcc-4_1-branch +228|108861|kargl|2005-12-20 18:15:19|gcc-4_1-branch +229|108896|jvdelisle|2005-12-21 04:50:19|gcc-4_1-branch +230|108897|jvdelisle|2005-12-21 05:08:53|gcc-4_1-branch +231|108899|jvdelisle|2005-12-21 06:51:02|gcc-4_1-branch +232|108900|jvdelisle|2005-12-21 06:52:38|gcc-4_1-branch +233|108903|eedelman|2005-12-21 12:07:58|gcc-4_1-branch +234|108905|aph|2005-12-21 14:56:00|gcc-4_1-branch +235|108907|steven|2005-12-21 15:32:09|gcc-4_1-branch +236|108908|steven|2005-12-21 15:37:10|gcc-4_1-branch +237|108910|rakdver|2005-12-21 15:49:19|gcc-4_1-branch +238|108912|pinskia|2005-12-21 16:44:09|gcc-4_1-branch +239|108917|pbrook|2005-12-21 17:20:36|gcc-4_1-branch +240|108951|kargl|2005-12-22 16:29:18|gcc-4_1-branch +241|108952|kargl|2005-12-22 16:41:41|gcc-4_1-branch +242|108957|tromey|2005-12-22 17:43:02|gcc-4_1-branch +243|108959|pinskia|2005-12-22 18:11:39|gcc-4_1-branch +244|108965|pbrook|2005-12-22 18:56:03|gcc-4_1-branch +245|108969|pbrook|2005-12-22 19:24:56|gcc-4_1-branch +246|108971|mmitchel|2005-12-22 19:59:00|gcc-4_1-branch +247|108983|jakub|2005-12-22 23:07:19|gcc-4_1-branch +248|108986|jakub|2005-12-22 23:21:00|gcc-4_1-branch +249|109002|jvdelisle|2005-12-23 02:02:52|gcc-4_1-branch +250|109005|jvdelisle|2005-12-23 02:59:37|gcc-4_1-branch +251|109011|mmitchel|2005-12-23 07:42:20|gcc-4_1-branch +252|109014|jakub|2005-12-23 09:44:41|gcc-4_1-branch +253|109019|uweigand|2005-12-23 18:38:43|gcc-4_1-branch +254|109023|mmitchel|2005-12-23 23:17:12|gcc-4_1-branch +255|109036|mmitchel|2005-12-24 08:56:10|gcc-4_1-branch +256|109040|tobi|2005-12-24 13:20:56|gcc-4_1-branch +257|109061|pault|2005-12-26 09:07:27|gcc-4_1-branch +258|109063|paolo|2005-12-26 12:02:12|gcc-4_1-branch +259|109076|mmitchel|2005-12-27 06:49:21|gcc-4_1-branch +260|109081|mmitchel|2005-12-27 17:18:05|gcc-4_1-branch +261|109084|ghazi|2005-12-27 20:08:39|gcc-4_1-branch +262|109105|paolo|2005-12-28 12:53:49|gcc-4_1-branch +263|109111|green|2005-12-28 17:25:43|gcc-4_1-branch +264|109112|green|2005-12-28 17:29:16|gcc-4_1-branch +265|109113|danglin|2005-12-28 17:41:07|gcc-4_1-branch +266|109117|green|2005-12-28 18:39:10|gcc-4_1-branch +267|109118|green|2005-12-28 18:46:09|gcc-4_1-branch +268|109121|pinskia|2005-12-28 19:27:31|gcc-4_1-branch +269|109134|amodra|2005-12-29 01:14:18|gcc-4_1-branch +270|109137|hp|2005-12-29 04:27:24|gcc-4_1-branch +271|109139|pault|2005-12-29 06:18:23|gcc-4_1-branch +272|109142|pbrook|2005-12-29 15:10:35|gcc-4_1-branch +273|109152|danglin|2005-12-29 19:40:15|gcc-4_1-branch +274|109167|danglin|2005-12-30 05:47:53|gcc-4_1-branch +275|109170|hp|2005-12-30 11:36:37|gcc-4_1-branch +276|109172|eedelman|2005-12-30 15:07:48|gcc-4_1-branch +277|109194|ghazi|2005-12-31 00:54:00|gcc-4_1-branch +278|109198|danglin|2005-12-31 02:18:49|gcc-4_1-branch +279|109199|kargl|2005-12-31 18:55:30|gcc-4_1-branch +280|109202|jakub|2006-01-01 00:00:56|gcc-4_1-branch +281|109212|jvdelisle|2006-01-01 03:49:00|gcc-4_1-branch +282|109213|jvdelisle|2006-01-01 03:53:12|gcc-4_1-branch +283|109214|jvdelisle|2006-01-01 04:16:39|gcc-4_1-branch +284|109215|jvdelisle|2006-01-01 04:20:41|gcc-4_1-branch +285|109216|jvdelisle|2006-01-01 05:04:06|gcc-4_1-branch +286|109217|jvdelisle|2006-01-01 05:06:05|gcc-4_1-branch +287|109244|reichelt|2006-01-02 20:42:35|gcc-4_1-branch +288|109245|reichelt|2006-01-02 20:47:21|gcc-4_1-branch +289|109259|jsm28|2006-01-03 02:09:18|gcc-4_1-branch +290|109269|mmitchel|2006-01-03 08:40:18|gcc-4_1-branch +291|109273|rguenth|2006-01-03 09:25:29|gcc-4_1-branch +292|109276|paolo|2006-01-03 10:57:27|gcc-4_1-branch +293|109292|steven|2006-01-03 22:37:46|gcc-4_1-branch +294|109304|tromey|2006-01-04 00:25:28|gcc-4_1-branch +295|109306|mmitchel|2006-01-04 01:04:03|gcc-4_1-branch +296|109319|jakub|2006-01-04 09:13:56|gcc-4_1-branch +297|109320|jakub|2006-01-04 09:16:09|gcc-4_1-branch +298|109321|jakub|2006-01-04 09:17:16|gcc-4_1-branch +299|109322|jakub|2006-01-04 09:19:53|gcc-4_1-branch +300|109341|tromey|2006-01-04 18:26:17|gcc-4_1-branch +301|109343|mmitchel|2006-01-04 18:49:21|gcc-4_1-branch +302|109358|kristerw|2006-01-04 23:33:12|gcc-4_1-branch +303|109369|rakdver|2006-01-05 00:29:34|gcc-4_1-branch +304|109378|aldot|2006-01-05 12:49:03|gcc-4_1-branch +305|109384|tromey|2006-01-05 17:40:44|gcc-4_1-branch +306|109389|eedelman|2006-01-05 21:10:05|gcc-4_1-branch +307|109401|tromey|2006-01-06 01:06:54|gcc-4_1-branch +308|109423|tromey|2006-01-06 19:01:34|gcc-4_1-branch +309|109425|kargl|2006-01-06 20:04:15|gcc-4_1-branch +310|109428|tromey|2006-01-06 20:26:52|gcc-4_1-branch +311|109430|jsm28|2006-01-06 20:36:43|gcc-4_1-branch +312|109434|tromey|2006-01-06 21:23:36|gcc-4_1-branch +313|109446|tromey|2006-01-07 01:10:51|gcc-4_1-branch +314|109453|jakub|2006-01-07 18:14:24|gcc-4_1-branch +315|109467|jvdelisle|2006-01-08 01:53:06|gcc-4_1-branch +316|109468|jvdelisle|2006-01-08 01:56:22|gcc-4_1-branch +317|109469|jvdelisle|2006-01-08 02:16:11|gcc-4_1-branch +318|109470|jvdelisle|2006-01-08 02:17:54|gcc-4_1-branch +319|109476|dje|2006-01-08 20:54:28|gcc-4_1-branch +320|109487|paolo|2006-01-09 00:45:57|gcc-4_1-branch +321|109491|fengwang|2006-01-09 02:54:25|gcc-4_1-branch +322|109495|kazu|2006-01-09 04:37:09|gcc-4_1-branch +323|109498|tromey|2006-01-09 06:46:32|gcc-4_1-branch +324|109500|eedelman|2006-01-09 16:19:22|gcc-4_1-branch +325|109504|pinskia|2006-01-09 19:46:23|gcc-4_1-branch +326|109505|tromey|2006-01-09 20:07:22|gcc-4_1-branch +327|109507|pinskia|2006-01-09 20:20:32|gcc-4_1-branch +328|109509|pinskia|2006-01-09 20:44:48|gcc-4_1-branch +329|109511|billingd|2006-01-09 22:48:00|gcc-4_1-branch +330|109514|tromey|2006-01-09 23:19:03|gcc-4_1-branch +331|109531|bkoz|2006-01-10 04:01:00|gcc-4_1-branch +332|109538|jbeulich|2006-01-10 07:36:25|gcc-4_1-branch +333|109545|bkoz|2006-01-10 17:14:00|gcc-4_1-branch +334|109546|paolo|2006-01-10 18:09:00|gcc-4_1-branch +335|109552|ebotcazou|2006-01-10 18:51:33|gcc-4_1-branch +336|109566|danglin|2006-01-11 00:28:13|gcc-4_1-branch +337|109574|pault|2006-01-11 07:27:31|gcc-4_1-branch +338|109583|hubicka|2006-01-11 13:32:44|gcc-4_1-branch +339|109586|bonzini|2006-01-11 14:29:29|gcc-4_1-branch +340|109592|aldot|2006-01-11 17:06:44|gcc-4_1-branch +341|109593|aldot|2006-01-11 17:07:55|gcc-4_1-branch +342|109595|nathan|2006-01-11 18:09:17|gcc-4_1-branch +343|109597|jb|2006-01-11 18:55:18|gcc-4_1-branch +344|109628|hjl|2006-01-12 01:35:21|gcc-4_1-branch +345|109639|jbeulich|2006-01-12 07:59:07|gcc-4_1-branch +346|109640|aldot|2006-01-12 12:28:00|gcc-4_1-branch +347|109644|nathan|2006-01-12 16:20:10|gcc-4_1-branch +348|109668|pinskia|2006-01-13 14:38:03|gcc-4_1-branch +349|109677|uweigand|2006-01-13 21:34:53|gcc-4_1-branch +350|109698|pault|2006-01-14 06:31:08|gcc-4_1-branch +351|109714|mmitchel|2006-01-15 00:57:22|gcc-4_1-branch +352|109718|green|2006-01-15 02:59:55|gcc-4_1-branch +353|109720|green|2006-01-15 03:11:53|gcc-4_1-branch +354|109741|danglin|2006-01-16 02:46:09|gcc-4_1-branch +355|109743|aj|2006-01-16 07:06:06|gcc-4_1-branch +356|109744|rguenth|2006-01-16 09:37:10|gcc-4_1-branch +357|109748|aph|2006-01-16 15:51:42|gcc-4_1-branch +358|109749|aph|2006-01-16 15:52:22|gcc-4_1-branch +359|109765|guerby|2006-01-16 19:35:02|gcc-4_1-branch +360|109769|green|2006-01-16 20:45:11|gcc-4_1-branch +361|109776|sayle|2006-01-16 23:29:38|gcc-4_1-branch +362|109789|danglin|2006-01-17 00:42:39|gcc-4_1-branch +363|109806|ian|2006-01-17 04:43:15|gcc-4_1-branch +364|109813|jakub|2006-01-17 10:00:05|gcc-4_1-branch +365|109815|jakub|2006-01-17 10:13:51|gcc-4_1-branch +366|109834|aj|2006-01-17 18:48:13|gcc-4_1-branch +367|109837|tromey|2006-01-17 19:59:29|gcc-4_1-branch +368|109843|pinskia|2006-01-17 22:33:15|gcc-4_1-branch +369|109863|jsm28|2006-01-18 01:59:19|gcc-4_1-branch +370|109868|jvdelisle|2006-01-18 04:27:31|gcc-4_1-branch +371|109869|jvdelisle|2006-01-18 04:32:16|gcc-4_1-branch +372|109878|jakub|2006-01-18 08:03:09|gcc-4_1-branch +373|109880|jakub|2006-01-18 08:06:25|gcc-4_1-branch +374|109884|paolo|2006-01-18 11:24:59|gcc-4_1-branch +375|109895|danglin|2006-01-18 16:30:18|gcc-4_1-branch +376|109897|pbrook|2006-01-18 16:31:50|gcc-4_1-branch +377|109900|pault|2006-01-18 18:56:43|gcc-4_1-branch +378|109935|tromey|2006-01-19 00:45:55|gcc-4_1-branch +379|109943|mmitchel|2006-01-19 06:52:56|gcc-4_1-branch +380|109947|rsandifo|2006-01-19 07:37:56|gcc-4_1-branch +381|109952|reichelt|2006-01-19 09:56:44|gcc-4_1-branch +382|109955|paolo|2006-01-19 12:04:31|gcc-4_1-branch +383|109958|hjl|2006-01-19 14:42:47|gcc-4_1-branch +384|109976|reichelt|2006-01-19 17:33:07|gcc-4_1-branch +385|109986|bkoz|2006-01-19 22:55:55|gcc-4_1-branch +386|109991|danglin|2006-01-19 23:48:07|gcc-4_1-branch +387|109993|pbrook|2006-01-20 00:01:55|gcc-4_1-branch +388|110010|paolo|2006-01-20 02:33:21|gcc-4_1-branch +389|110016|mmitchel|2006-01-20 03:07:49|gcc-4_1-branch +390|110026|danglin|2006-01-20 14:32:10|gcc-4_1-branch +391|110042|tromey|2006-01-20 22:01:51|gcc-4_1-branch +392|110043|tromey|2006-01-20 22:13:10|gcc-4_1-branch +393|110059|tromey|2006-01-21 00:44:41|gcc-4_1-branch +394|110061|jvdelisle|2006-01-21 07:19:39|gcc-4_1-branch +395|110062|jvdelisle|2006-01-21 07:21:11|gcc-4_1-branch +396|110070|jsm28|2006-01-21 18:29:08|gcc-4_1-branch +397|110083|mmitchel|2006-01-22 00:41:58|gcc-4_1-branch +398|110107|pault|2006-01-23 05:37:47|gcc-4_1-branch +399|110110|rguenth|2006-01-23 09:50:07|gcc-4_1-branch +400|110112|rguenth|2006-01-23 10:01:36|gcc-4_1-branch +401|110114|rguenth|2006-01-23 10:09:58|gcc-4_1-branch +402|110132|ebotcazou|2006-01-23 17:22:40|gcc-4_1-branch +403|110135|daney|2006-01-23 17:53:45|gcc-4_1-branch +404|110145|jakub|2006-01-23 21:51:10|gcc-4_1-branch +405|110178|tromey|2006-01-24 18:15:39|gcc-4_1-branch +406|110180|reichelt|2006-01-24 21:38:56|gcc-4_1-branch +407|110190|daney|2006-01-25 00:11:41|gcc-4_1-branch +408|110211|paolo|2006-01-25 11:01:46|gcc-4_1-branch +409|110212|paolo|2006-01-25 11:05:15|gcc-4_1-branch +410|110213|ebotcazou|2006-01-25 14:06:59|gcc-4_1-branch +411|110216|kazu|2006-01-25 16:11:17|gcc-4_1-branch +412|110230|ebotcazou|2006-01-25 23:03:55|gcc-4_1-branch +413|110232|tobi|2006-01-25 23:38:34|gcc-4_1-branch +414|110241|tromey|2006-01-26 00:38:24|gcc-4_1-branch +415|110248|pbrook|2006-01-26 04:09:07|gcc-4_1-branch +416|110253|paolo|2006-01-26 11:49:48|gcc-4_1-branch +417|110259|paolo|2006-01-26 16:05:03|gcc-4_1-branch +418|110267|aoliva|2006-01-26 19:06:06|gcc-4_1-branch +419|110271|guerby|2006-01-26 20:40:46|gcc-4_1-branch +420|110280|danglin|2006-01-26 22:26:49|gcc-4_1-branch +421|110283|sje|2006-01-26 22:40:15|gcc-4_1-branch +422|110302|eedelman|2006-01-27 17:19:36|gcc-4_1-branch +423|110305|jakub|2006-01-27 20:03:59|gcc-4_1-branch +424|110310|pault|2006-01-27 22:16:04|gcc-4_1-branch +425|110330|mmitchel|2006-01-28 19:24:11|gcc-4_1-branch +426|110331|mmitchel|2006-01-28 19:24:45|gcc-4_1-branch +427|110337|mmitchel|2006-01-28 22:10:17|gcc-4_1-branch +428|110341|hp|2006-01-28 22:55:01|gcc-4_1-branch +429|110343|hp|2006-01-28 22:58:24|gcc-4_1-branch +430|110344|hp|2006-01-28 23:00:24|gcc-4_1-branch +431|110345|hp|2006-01-28 23:01:20|gcc-4_1-branch +432|110346|hp|2006-01-28 23:03:00|gcc-4_1-branch +433|110347|hp|2006-01-28 23:03:58|gcc-4_1-branch +434|110361|jvdelisle|2006-01-29 03:50:23|gcc-4_1-branch +435|110362|jvdelisle|2006-01-29 03:58:42|gcc-4_1-branch +436|110363|jvdelisle|2006-01-29 04:00:08|gcc-4_1-branch +437|110383|ebotcazou|2006-01-29 22:24:10|gcc-4_1-branch +438|110394|pault|2006-01-30 05:45:06|gcc-4_1-branch +439|110401|amylaar|2006-01-30 16:19:11|gcc-4_1-branch +440|110402|aph|2006-01-30 16:25:40|gcc-4_1-branch +441|110404|amylaar|2006-01-30 17:01:58|gcc-4_1-branch +442|110406|sje|2006-01-30 17:08:10|gcc-4_1-branch +443|110408|amylaar|2006-01-30 19:02:39|gcc-4_1-branch +444|110423|uweigand|2006-01-31 01:09:36|gcc-4_1-branch +445|110433|rguenth|2006-01-31 09:46:21|gcc-4_1-branch +446|110438|mark|2006-01-31 13:33:03|gcc-4_1-branch +447|110444|nathan|2006-01-31 17:06:56|gcc-4_1-branch +448|110447|eedelman|2006-01-31 20:45:40|gcc-4_1-branch +449|110450|carlos|2006-01-31 21:59:53|gcc-4_1-branch +450|110452|jakub|2006-01-31 22:37:17|gcc-4_1-branch +451|110467|mmitchel|2006-02-01 02:55:45|gcc-4_1-branch +452|110482|paolo|2006-02-01 21:57:48|gcc-4_1-branch +453|110483|paolo|2006-02-01 22:00:10|gcc-4_1-branch +454|110496|tromey|2006-02-02 00:48:20|gcc-4_1-branch +455|110498|tromey|2006-02-02 01:47:04|gcc-4_1-branch +456|110538|krebbel|2006-02-03 07:44:12|gcc-4_1-branch +457|110542|amodra|2006-02-03 12:05:51|gcc-4_1-branch +458|110549|sje|2006-02-03 18:02:04|gcc-4_1-branch +459|110551|pinskia|2006-02-03 18:31:14|gcc-4_1-branch +460|110560|kargl|2006-02-03 21:32:14|gcc-4_1-branch +461|110564|jason|2006-02-03 21:56:03|gcc-4_1-branch +462|110568|rth|2006-02-03 23:46:44|gcc-4_1-branch +463|110581|fitzsim|2006-02-04 01:09:11|gcc-4_1-branch +464|110582|danglin|2006-02-04 01:12:46|gcc-4_1-branch +465|110593|mark|2006-02-04 20:21:48|gcc-4_1-branch +466|110597|aoliva|2006-02-04 22:13:20|gcc-4_1-branch +467|110600|tkoenig|2006-02-05 00:14:37|gcc-4_1-branch +468|110612|jakub|2006-02-05 11:27:20|gcc-4_1-branch +469|110616|danglin|2006-02-05 16:18:20|gcc-4_1-branch +470|110624|ebotcazou|2006-02-05 21:53:48|gcc-4_1-branch +471|110650|jakub|2006-02-06 16:07:46|gcc-4_1-branch +472|110660|pinskia|2006-02-06 18:49:05|gcc-4_1-branch +473|110662|mark|2006-02-06 19:18:36|gcc-4_1-branch +474|110666|andreast|2006-02-06 21:48:30|gcc-4_1-branch +475|110667|tromey|2006-02-06 22:06:21|gcc-4_1-branch +476|110669|tromey|2006-02-06 22:41:34|gcc-4_1-branch +477|110670|janis|2006-02-06 22:58:10|gcc-4_1-branch +478|110683|tromey|2006-02-07 01:05:55|gcc-4_1-branch +479|110689|jakub|2006-02-07 06:52:17|gcc-4_1-branch +480|110698|paolo|2006-02-07 15:11:34|gcc-4_1-branch +481|110701|tobi|2006-02-07 17:35:25|gcc-4_1-branch +482|110703|aph|2006-02-07 18:15:45|gcc-4_1-branch +483|110708|ebotcazou|2006-02-07 18:54:16|gcc-4_1-branch +484|110718|ebotcazou|2006-02-07 20:51:43|gcc-4_1-branch +485|110722|danglin|2006-02-07 22:11:30|gcc-4_1-branch +486|110740|fitzsim|2006-02-08 05:55:47|gcc-4_1-branch +487|110748|reichelt|2006-02-08 11:03:09|gcc-4_1-branch +488|110752|reichelt|2006-02-08 11:23:17|gcc-4_1-branch +489|110756|tobi|2006-02-08 13:14:43|gcc-4_1-branch +490|110764|tkoenig|2006-02-08 20:14:00|gcc-4_1-branch +491|110791|ebotcazou|2006-02-09 12:23:59|gcc-4_1-branch +492|110795|dnovillo|2006-02-09 13:40:52|gcc-4_1-branch +493|110797|pinskia|2006-02-09 14:00:59|gcc-4_1-branch +494|110798|aph|2006-02-09 14:03:17|gcc-4_1-branch +495|110802|pinskia|2006-02-09 14:46:04|gcc-4_1-branch +496|110805|ro|2006-02-09 17:26:14|gcc-4_1-branch +497|110808|ro|2006-02-09 17:30:56|gcc-4_1-branch +498|110831|tromey|2006-02-10 01:54:34|gcc-4_1-branch +499|110838|jason|2006-02-10 17:32:10|gcc-4_1-branch +500|110847|tromey|2006-02-10 19:52:44|gcc-4_1-branch +501|110848|kargl|2006-02-10 20:09:41|gcc-4_1-branch +502|110851|jakub|2006-02-10 20:58:33|gcc-4_1-branch +503|110856|kargl|2006-02-10 23:20:10|gcc-4_1-branch +504|110872|jakub|2006-02-11 08:38:51|gcc-4_1-branch +505|110875|ghazi|2006-02-11 19:16:31|gcc-4_1-branch +506|110879|dje|2006-02-11 21:34:46|gcc-4_1-branch +507|110887|jason|2006-02-12 08:00:51|gcc-4_1-branch +508|110890|jason|2006-02-12 16:07:04|gcc-4_1-branch +509|110894|tobi|2006-02-12 18:31:40|gcc-4_1-branch +510|110921|pault|2006-02-13 19:32:02|gcc-4_1-branch +511|110928|jakub|2006-02-13 21:29:13|gcc-4_1-branch +512|110930|pault|2006-02-13 21:35:09|gcc-4_1-branch +513|110937|tromey|2006-02-13 22:58:37|gcc-4_1-branch +514|110948|danglin|2006-02-14 00:23:57|gcc-4_1-branch +515|110960|pault|2006-02-14 07:18:44|gcc-4_1-branch +516|110962|rguenth|2006-02-14 09:54:07|gcc-4_1-branch +517|110970|amylaar|2006-02-14 14:36:15|gcc-4_1-branch +518|110971|amylaar|2006-02-14 14:46:33|gcc-4_1-branch +519|110973|fxcoudert|2006-02-14 14:50:40|gcc-4_1-branch +520|110974|dberlin|2006-02-14 15:08:01|gcc-4_1-branch +521|110975|fxcoudert|2006-02-14 15:47:49|gcc-4_1-branch +522|110978|matz|2006-02-14 16:01:32|gcc-4_1-branch +523|110980|reichelt|2006-02-14 16:08:06|gcc-4_1-branch +524|110982|matz|2006-02-14 16:12:56|gcc-4_1-branch +525|110986|ro|2006-02-14 16:50:45|gcc-4_1-branch +526|110988|ro|2006-02-14 17:28:02|gcc-4_1-branch +527|110989|eedelman|2006-02-14 17:34:07|gcc-4_1-branch +528|110995|jb|2006-02-14 20:21:15|gcc-4_1-branch +529|111014|danglin|2006-02-15 02:54:08|gcc-4_1-branch +530|111016|doko|2006-02-15 03:48:39|gcc-4_1-branch +531|111017|hp|2006-02-15 04:14:02|gcc-4_1-branch +532|111111|amylaar|2006-02-15 13:28:05|gcc-4_1-branch +533|111138|rakdver|2006-02-16 15:23:24|gcc-4_1-branch +534|111145|sayle|2006-02-16 16:45:49|gcc-4_1-branch +535|111176|jakub|2006-02-17 08:58:46|gcc-4_1-branch +536|111179|ebotcazou|2006-02-17 11:21:20|gcc-4_1-branch +537|111211|sayle|2006-02-17 21:38:59|gcc-4_1-branch +538|111227|jakub|2006-02-18 07:49:27|gcc-4_1-branch +539|111228|jakub|2006-02-18 08:35:54|gcc-4_1-branch +540|111231|mmitchel|2006-02-18 08:37:34|gcc-4_1-branch +541|111233|mmitchel|2006-02-18 09:40:03|gcc-4_1-branch +542|111238|sje|2006-02-18 15:59:57|gcc-4_1-branch +543|111240|danglin|2006-02-18 16:12:20|gcc-4_1-branch +544|111248|jakub|2006-02-18 19:04:08|gcc-4_1-branch +545|111252|danglin|2006-02-18 21:29:34|gcc-4_1-branch +546|111257|mark|2006-02-19 00:08:09|gcc-4_1-branch +547|111276|mmitchel|2006-02-19 19:31:22|gcc-4_1-branch +548|111277|mmitchel|2006-02-19 19:46:54|gcc-4_1-branch +549|111278|mmitchel|2006-02-19 19:56:01|gcc-4_1-branch +550|111297|jakub|2006-02-20 09:26:29|gcc-4_1-branch +551|111311|eedelman|2006-02-20 20:06:49|gcc-4_1-branch +552|111340|ro|2006-02-21 19:17:27|gcc-4_1-branch +553|111371|paolo|2006-02-22 20:03:32|gcc-4_1-branch +554|111409|mmitchel|2006-02-24 01:18:27|gcc-4_1-branch +555|111411|mmitchel|2006-02-24 01:37:22|gcc-4_1-branch +556|111412|mmitchel|2006-02-24 01:47:22|gcc-4_1-branch +557|111413|mmitchel|2006-02-24 03:49:43|gcc-4_1-branch +558|111500|mmitchel|2006-02-28 00:29:00|gcc-4_1-branch +559|111517|mmitchel|2006-02-28 08:09:17|gcc-4_1-branch +560|111519|mmitchel|2006-02-28 08:12:35|gcc-4_1-branch +561|111520|mmitchel|2006-02-28 08:14:04|gcc-4_1-branch +562|111521|mmitchel|2006-02-28 08:27:36|gcc-4_1-branch +563|111522|mmitchel|2006-02-28 08:27:44|gcc-4_1-branch +564|111523|mmitchel|2006-02-28 08:27:53|gcc-4_1-branch +565|111524|mmitchel|2006-02-28 08:27:55|gcc-4_1-branch +566|111525|mmitchel|2006-02-28 08:27:59|gcc-4_1-branch +567|111526|mmitchel|2006-02-28 08:28:02|gcc-4_1-branch +568|111527|mmitchel|2006-02-28 08:28:06|gcc-4_1-branch diff --git a/gcc-4.8.3/contrib/reghunt/examples/29106.log b/gcc-4.8.3/contrib/reghunt/examples/29106.log new file mode 100644 index 000000000..fd4b6d863 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29106.log @@ -0,0 +1,111 @@ +Mon Feb 16 15:16:01 PST 2009 LATER_THAN = 1 +Mon Feb 16 15:16:01 PST 2009 EARLIER_THAN = 568 +Mon Feb 16 15:16:01 PST 2009 svn checkout begun for id 568, rev 111527 +Mon Feb 16 15:19:11 PST 2009 svn checkout done +Mon Feb 16 15:19:11 PST 2009 building GCC (c,c++) for id 568 +Mon Feb 16 15:29:17 PST 2009 no output for bug 29106, id 568 +Mon Feb 16 15:29:17 PST 2009 result for high patch 568 is as expected +Mon Feb 16 15:29:17 PST 2009 svn update begun for id 1, rev 107221 +Mon Feb 16 15:29:48 PST 2009 svn update done +Mon Feb 16 15:29:49 PST 2009 building GCC (c,c++) for id 1 +Mon Feb 16 15:40:07 PST 2009 test ran successfully for bug 29106, id 1 +Mon Feb 16 15:40:07 PST 2009 result for low patch 1 is as expected +Mon Feb 16 15:40:07 PST 2009 svn update begun for id 284, rev 109215 +Mon Feb 16 15:40:24 PST 2009 svn update done +Mon Feb 16 15:40:24 PST 2009 building GCC (c,c++) for id 284 +Mon Feb 16 15:50:30 PST 2009 test ran successfully for bug 29106, id 284 +Mon Feb 16 15:50:30 PST 2009 search patches later than 284 +Mon Feb 16 15:50:30 PST 2009 svn update begun for id 426, rev 110331 +Mon Feb 16 15:50:59 PST 2009 svn update done +Mon Feb 16 15:51:00 PST 2009 building GCC (c,c++) for id 426 +Mon Feb 16 16:01:06 PST 2009 test ran successfully for bug 29106, id 426 +Mon Feb 16 16:01:06 PST 2009 search patches later than 426 +Mon Feb 16 16:01:06 PST 2009 svn update begun for id 497, rev 110808 +Mon Feb 16 16:01:21 PST 2009 svn update done +Mon Feb 16 16:01:22 PST 2009 building GCC (c,c++) for id 497 +Mon Feb 16 16:11:29 PST 2009 test ran successfully for bug 29106, id 497 +Mon Feb 16 16:11:29 PST 2009 search patches later than 497 +Mon Feb 16 16:11:29 PST 2009 svn update begun for id 532, rev 111111 +Mon Feb 16 16:11:38 PST 2009 svn update done +Mon Feb 16 16:11:39 PST 2009 building GCC (c,c++) for id 532 +Mon Feb 16 16:21:47 PST 2009 test ran successfully for bug 29106, id 532 +Mon Feb 16 16:21:47 PST 2009 search patches later than 532 +Mon Feb 16 16:21:48 PST 2009 svn update begun for id 550, rev 111297 +Mon Feb 16 16:21:55 PST 2009 svn update done +Mon Feb 16 16:21:56 PST 2009 building GCC (c,c++) for id 550 +Mon Feb 16 16:32:07 PST 2009 no output for bug 29106, id 550 +Mon Feb 16 16:32:07 PST 2009 search patches earlier than 550 +Mon Feb 16 16:32:07 PST 2009 svn update begun for id 541, rev 111233 +Mon Feb 16 16:32:11 PST 2009 svn update done +Mon Feb 16 16:32:12 PST 2009 building GCC (c,c++) for id 541 +Mon Feb 16 16:42:19 PST 2009 no output for bug 29106, id 541 +Mon Feb 16 16:42:19 PST 2009 search patches earlier than 541 +Mon Feb 16 16:42:19 PST 2009 svn update begun for id 536, rev 111179 +Mon Feb 16 16:42:26 PST 2009 svn update done +Mon Feb 16 16:42:26 PST 2009 building GCC (c,c++) for id 536 +Mon Feb 16 16:52:30 PST 2009 test ran successfully for bug 29106, id 536 +Mon Feb 16 16:52:30 PST 2009 search patches later than 536 +Mon Feb 16 16:52:30 PST 2009 svn update begun for id 538, rev 111227 +Mon Feb 16 16:52:35 PST 2009 svn update done +Mon Feb 16 16:52:35 PST 2009 building GCC (c,c++) for id 538 +Mon Feb 16 17:02:35 PST 2009 test ran successfully for bug 29106, id 538 +Mon Feb 16 17:02:35 PST 2009 search patches later than 538 +Mon Feb 16 17:02:35 PST 2009 svn update begun for id 539, rev 111228 +Mon Feb 16 17:02:39 PST 2009 svn update done +Mon Feb 16 17:02:39 PST 2009 building GCC (c,c++) for id 539 +Mon Feb 16 17:12:42 PST 2009 test ran successfully for bug 29106, id 539 +Mon Feb 16 17:12:42 PST 2009 search patches later than 539 +Mon Feb 16 17:12:42 PST 2009 svn update begun for id 540, rev 111231 +Mon Feb 16 17:12:47 PST 2009 svn update done +Mon Feb 16 17:12:47 PST 2009 building GCC (c,c++) for id 540 +Mon Feb 16 17:22:53 PST 2009 no output for bug 29106, id 540 +Mon Feb 16 17:22:53 PST 2009 search patches earlier than 540 +Test result changes with id 540 +------------------------------------------------------------------------ +r111231 | mmitchel | 2006-02-18 08:37:34 +0000 (Sat, 18 Feb 2006) | 41 lines + + PR c++/26266 + * cp-tree.h (cp_finish_decl): Adjust declaration. + (grokbitfield): Likewise. + (finish_static_data_member_decl): Likewise. + * init.c (constant_value_1): Ensure processing_template_decl when + folding non-dependent initializers for static data members of + dependent types. Return error_mark_node for erroneous + initailizers. + * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl. + * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl. + (cp_finish_decl): Add init_const_expr_p parameter. Set + DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here. + (finish_decl): Adjust call to cp_finish_decl. + (compute_array_index_type): Robustify. + (start_method): Use finish_decl, not cp_finish_decl. + * rtti.c (emit_tinfo_decl): Likewise. + * except.c (initialize_handler_parm): Adjust call to + cp_finish_decl. + (expand_start_catch_block): Likewise. + * cvt.c (build_up_reference): Adjust call to cp_finish_decl. + * pt.c (instantiate_class_template): Adjust call to + finish_static_data_member_decl. + (tsubst_expr): Use finish_decl, not cp_finish_decl. + (instantiate_decl): Adjust call to cp_finish_decl. + * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not + cp_finish_decl. + * decl2.c (finish_static_data_member_decl): Add init_const_expr_p + parameter. + (grokfield): Likewise. + * parser.c (cp_parser_condition): Check for constant initializers. + (cp_parser_init_declarator): Adjust calls to grokfield and + cp_finish_decl. Don't set + DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here. + (cp_parser_member_declaration): Likewise. + (cp_parser_objc_class_ivars): Likewise. + PR c++/26266 + * g++.dg/template/static22.C: New test. + * g++.dg/template/static23.C: New test. + * g++.dg/template/static24.C: New test. + * g++.dg/template/non-dependent13.C: New test. + +------------------------------------------------------------------------ + + http://gcc.gnu.org/viewcvs?view=rev&rev=111231 + r111231 | mmitchel | 2006-02-18 08:37:34 +0000 (Sat, 18 Feb 2006) diff --git a/gcc-4.8.3/contrib/reghunt/examples/29106.test b/gcc-4.8.3/contrib/reghunt/examples/29106.test new file mode 100755 index 000000000..28f89a8e5 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29106.test @@ -0,0 +1,29 @@ +#! /bin/sh + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: test compilation failed for ${MSGID}" + exit $REG_ERROR +fi + +./a.out >> ${LOG} 2>&1 +if [ $? -ne 0 ]; then + echo "`date` unexpected failure: test run aborted for ${MSGID}" + exit $REG_ERROR +fi + +grep -q 'size of thingy is 4' $LOG +if [ $? -ne 0 ]; then + echo "`date` no output for ${MSGID}" + exit $REG_FAIL +fi + +echo "`date` test ran successfully for ${MSGID}" +exit $REG_PASS diff --git a/gcc-4.8.3/contrib/reghunt/examples/29478.c b/gcc-4.8.3/contrib/reghunt/examples/29478.c new file mode 100644 index 000000000..0490f4d9d --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29478.c @@ -0,0 +1,12 @@ +struct block; + +static int +remove_out_of_scope_renamings (struct block *current_block) +{ + return 1; +} +int +ada_lookup_symbol_list (const struct block *block0) +{ + return remove_out_of_scope_renamings ((struct block *) block0); +} diff --git a/gcc-4.8.3/contrib/reghunt/examples/29478.config b/gcc-4.8.3/contrib/reghunt/examples/29478.config new file mode 100644 index 000000000..1398f6012 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29478.config @@ -0,0 +1,16 @@ +BUGID=29478 +FIND=break +LANG=c +BUILD_KIND=simple +BUG_KIND=bogus-warning +OPTS="-O1" + +. ./common.config + +#LOW_PATCH=212 +#HIGH_PATCH=222 + +#msg 0 'NOTE: skipping low patch, already verified' +#SKIP_LOW=1 +#msg 0 'NOTE: skipping high patch, already verified' +#SKIP_HIGH=1 diff --git a/gcc-4.8.3/contrib/reghunt/examples/29478.list b/gcc-4.8.3/contrib/reghunt/examples/29478.list new file mode 100644 index 000000000..a578a84c6 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29478.list @@ -0,0 +1,340 @@ +1|115866|reichelt|2006-08-01 23:45:11|trunk +2|115873|hubicka|2006-08-02 09:34:34|trunk +3|115874|drow|2006-08-02 13:31:56|trunk +4|115881|tkoenig|2006-08-02 20:05:23|trunk +5|115883|andreast|2006-08-02 20:18:05|trunk +6|115886|mmitchel|2006-08-02 20:35:41|trunk +7|115887|rguenth|2006-08-02 20:48:59|trunk +8|115893|reichelt|2006-08-03 02:30:49|trunk +9|115896|reichelt|2006-08-03 02:49:07|trunk +10|115899|schwab|2006-08-03 09:28:37|trunk +11|115902|dje|2006-08-03 13:48:01|trunk +12|115903|danglin|2006-08-03 16:32:29|trunk +13|115907|tromey|2006-08-03 17:13:51|trunk +14|115910|dorit|2006-08-03 20:35:05|trunk +15|115911|paolo|2006-08-03 21:11:13|trunk +16|115912|hubicka|2006-08-03 21:21:22|trunk +17|115919|mmitchel|2006-08-04 04:58:36|trunk +18|115921|kazu|2006-08-04 06:10:15|trunk +19|115923|paolo|2006-08-04 09:34:17|trunk +20|115924|danglin|2006-08-04 14:15:37|trunk +21|115927|hubicka|2006-08-04 17:03:32|trunk +22|115928|hubicka|2006-08-04 17:05:38|trunk +23|115931|lmillward|2006-08-04 18:08:14|trunk +24|115934|kseitz|2006-08-04 20:34:02|trunk +25|115942|tromey|2006-08-05 01:28:36|trunk +26|115943|tromey|2006-08-05 03:17:07|trunk +27|115947|paolo|2006-08-05 10:11:13|trunk +28|115949|fxcoudert|2006-08-05 13:37:52|trunk +29|115952|reichelt|2006-08-05 23:08:54|trunk +30|115955|reichelt|2006-08-05 23:26:38|trunk +31|115957|reichelt|2006-08-05 23:41:22|trunk +32|115963|kargl|2006-08-06 01:38:46|trunk +33|115966|pault|2006-08-06 04:58:04|trunk +34|115968|schwab|2006-08-06 10:15:33|trunk +35|115969|bonzini|2006-08-06 12:06:31|trunk +36|115972|paolo|2006-08-06 14:45:04|trunk +37|115973|schwab|2006-08-06 17:05:28|trunk +38|115974|amylaar|2006-08-06 19:43:03|trunk +39|115976|tromey|2006-08-06 21:52:04|trunk +40|115977|tromey|2006-08-06 22:43:05|trunk +41|115978|danglin|2006-08-06 23:41:57|trunk +42|115979|danglin|2006-08-06 23:56:24|trunk +43|115980|danglin|2006-08-07 00:04:06|trunk +44|115987|danglin|2006-08-07 00:22:26|trunk +45|115988|ebotcazou|2006-08-07 06:44:41|trunk +46|115991|ebotcazou|2006-08-07 07:23:49|trunk +47|115992|ebotcazou|2006-08-07 07:45:11|trunk +48|115993|ebotcazou|2006-08-07 08:13:22|trunk +49|115994|ebotcazou|2006-08-07 08:18:53|trunk +50|115995|victork|2006-08-07 11:28:31|trunk +51|115996|gary|2006-08-07 14:14:14|trunk +52|115998|gary|2006-08-07 14:42:48|trunk +53|115999|gary|2006-08-07 14:48:59|trunk +54|116003|tromey|2006-08-07 20:37:50|trunk +55|116006|dannysmith|2006-08-07 23:40:54|trunk +56|116012|ebotcazou|2006-08-08 07:56:32|trunk +57|116031|aoliva|2006-08-09 06:46:22|trunk +58|116032|gary|2006-08-09 08:38:28|trunk +59|116033|gary|2006-08-09 08:46:34|trunk +60|116034|paolo|2006-08-09 09:56:15|trunk +61|116038|gary|2006-08-09 14:59:16|trunk +62|116041|ebotcazou|2006-08-09 16:38:45|trunk +63|116043|lmillward|2006-08-09 18:43:06|trunk +64|116044|tromey|2006-08-09 19:00:54|trunk +65|116045|nathan|2006-08-09 19:09:06|trunk +66|116049|paolo|2006-08-09 23:39:16|trunk +67|116058|gary|2006-08-10 09:56:03|trunk +68|116059|paolo|2006-08-10 10:35:27|trunk +69|116060|dorit|2006-08-10 12:07:22|trunk +70|116061|paolo|2006-08-10 14:38:11|trunk +71|116064|pbrook|2006-08-10 16:31:40|trunk +72|116069|aph|2006-08-10 19:35:07|trunk +73|116071|ebotcazou|2006-08-10 22:13:42|trunk +74|116072|ebotcazou|2006-08-10 22:17:15|trunk +75|116079|rguenth|2006-08-11 07:44:45|trunk +76|116081|paolo|2006-08-11 10:39:37|trunk +77|116088|ebotcazou|2006-08-11 19:01:45|trunk +78|116091|dje|2006-08-11 20:40:52|trunk +79|116097|fxcoudert|2006-08-12 01:03:29|trunk +80|116098|fxcoudert|2006-08-12 07:30:04|trunk +81|116099|jakub|2006-08-12 13:39:05|trunk +82|116107|doko|2006-08-13 07:27:30|trunk +83|116109|mueller|2006-08-13 15:04:41|trunk +84|116111|pinskia|2006-08-13 16:49:24|trunk +85|116116|pinskia|2006-08-13 20:16:46|trunk +86|116124|rsandifo|2006-08-14 11:55:52|trunk +87|116128|gary|2006-08-14 14:24:52|trunk +88|116129|rguenth|2006-08-14 15:05:37|trunk +89|116134|kazu|2006-08-14 17:55:03|trunk +90|116137|jason|2006-08-14 21:25:03|trunk +91|116139|mark|2006-08-14 23:12:35|trunk +92|116140|sje|2006-08-14 23:13:54|trunk +93|116141|sje|2006-08-14 23:15:57|trunk +94|116142|mrs|2006-08-14 23:40:41|trunk +95|116148|pinskia|2006-08-15 01:43:28|trunk +96|116149|paolo|2006-08-15 02:28:45|trunk +97|116151|paolo|2006-08-15 09:08:31|trunk +98|116152|andreast|2006-08-15 09:36:39|trunk +99|116153|jakub|2006-08-15 14:56:28|trunk +100|116154|jakub|2006-08-15 14:57:52|trunk +101|116155|paolo|2006-08-15 15:11:24|trunk +102|116157|reichelt|2006-08-15 16:52:25|trunk +103|116159|nickc|2006-08-15 17:06:18|trunk +104|116160|lmillward|2006-08-15 17:21:09|trunk +105|116163|mrs|2006-08-15 18:01:19|trunk +106|116167|kgallowa|2006-08-15 20:40:10|trunk +107|116168|kgallowa|2006-08-15 21:04:05|trunk +108|116169|kgallowa|2006-08-15 21:10:01|trunk +109|116170|dannysmith|2006-08-15 21:46:30|trunk +110|116171|jvdelisle|2006-08-15 23:03:28|trunk +111|116172|jvdelisle|2006-08-15 23:06:44|trunk +112|116173|jvdelisle|2006-08-15 23:14:03|trunk +113|116180|nickc|2006-08-16 08:20:51|trunk +114|116187|mrs|2006-08-16 20:36:23|trunk +115|116188|reichelt|2006-08-16 20:50:18|trunk +116|116189|rakdver|2006-08-16 21:14:11|trunk +117|116190|rakdver|2006-08-16 21:25:39|trunk +118|116191|reichelt|2006-08-16 21:35:18|trunk +119|116194|jsm28|2006-08-16 23:10:46|trunk +120|116196|dj|2006-08-17 00:05:07|trunk +121|116197|rakdver|2006-08-17 00:13:24|trunk +122|116203|jason|2006-08-17 00:51:37|trunk +123|116204|tromey|2006-08-17 01:03:21|trunk +124|116205|pinskia|2006-08-17 01:56:47|trunk +125|116206|tromey|2006-08-17 01:57:55|trunk +126|116207|danglin|2006-08-17 02:26:59|trunk +127|116208|bonzini|2006-08-17 07:02:55|trunk +128|116209|jakub|2006-08-17 07:58:02|trunk +129|116210|reichelt|2006-08-17 08:02:39|trunk +130|116211|reichelt|2006-08-17 08:06:27|trunk +131|116213|rakdver|2006-08-17 08:22:05|trunk +132|116214|mkuvyrkov|2006-08-17 08:48:37|trunk +133|116215|aoliva|2006-08-17 08:55:02|trunk +134|116217|reichelt|2006-08-17 09:07:39|trunk +135|116220|hubicka|2006-08-17 09:44:12|trunk +136|116221|hubicka|2006-08-17 10:08:31|trunk +137|116222|jakub|2006-08-17 11:52:26|trunk +138|116224|amylaar|2006-08-17 13:28:03|trunk +139|116227|hjl|2006-08-17 17:03:34|trunk +140|116230|andreast|2006-08-17 19:07:29|trunk +141|116237|uros|2006-08-18 05:48:13|trunk +142|116240|paolo|2006-08-18 15:42:05|trunk +143|116245|paolo|2006-08-18 17:15:43|trunk +144|116247|tromey|2006-08-18 17:27:29|trunk +145|116249|jsm28|2006-08-18 19:15:31|trunk +146|116251|tromey|2006-08-18 19:58:06|trunk +147|116258|rmathew|2006-08-19 15:35:11|trunk +148|116261|eedelman|2006-08-19 21:05:59|trunk +149|116268|pault|2006-08-20 05:45:43|trunk +150|116270|dannysmith|2006-08-20 08:46:13|trunk +151|116271|jb|2006-08-20 09:22:04|trunk +152|116273|paolo|2006-08-20 16:05:05|trunk +153|116274|hubicka|2006-08-20 18:46:54|trunk +154|116276|mmitchel|2006-08-20 23:53:10|trunk +155|116277|hubicka|2006-08-21 00:00:14|trunk +156|116284|hubicka|2006-08-21 01:42:39|trunk +157|116285|hubicka|2006-08-21 01:53:11|trunk +158|116291|shinwell|2006-08-21 10:10:58|trunk +159|116296|ghazi|2006-08-21 12:34:25|trunk +160|116300|hainque|2006-08-21 16:01:03|trunk +161|116301|lmillward|2006-08-21 17:27:48|trunk +162|116302|lmillward|2006-08-21 17:34:44|trunk +163|116303|lmillward|2006-08-21 17:41:18|trunk +164|116304|amylaar|2006-08-21 18:07:00|trunk +165|116305|lmillward|2006-08-21 18:43:36|trunk +166|116308|shinwell|2006-08-21 19:15:15|trunk +167|116311|jason|2006-08-21 20:54:57|trunk +168|116312|jason|2006-08-21 20:56:28|trunk +169|116313|tromey|2006-08-21 22:07:30|trunk +170|116321|sayle|2006-08-22 12:42:41|trunk +171|116323|dberlin|2006-08-22 14:04:16|trunk +172|116324|aph|2006-08-22 15:00:37|trunk +173|116325|hubicka|2006-08-22 15:44:56|trunk +174|116326|rguenth|2006-08-22 16:26:32|trunk +175|116327|paolo|2006-08-22 18:07:55|trunk +176|116328|paolo|2006-08-22 18:15:22|trunk +177|116329|jason|2006-08-22 18:27:26|trunk +178|116330|jason|2006-08-22 18:51:40|trunk +179|116331|geoffk|2006-08-22 19:16:03|trunk +180|116332|fitzsim|2006-08-22 20:37:36|trunk +181|116333|pmj|2006-08-22 22:34:45|trunk +182|116334|paolo|2006-08-22 22:57:53|trunk +183|116341|pinskia|2006-08-23 02:56:43|trunk +184|116342|jason|2006-08-23 04:27:43|trunk +185|116345|bkoz|2006-08-23 10:16:31|trunk +186|116350|jason|2006-08-23 14:04:24|trunk +187|116355|dannysmith|2006-08-23 18:30:57|trunk +188|116356|stuart|2006-08-23 21:41:35|trunk +189|116357|kseitz|2006-08-23 22:18:08|trunk +190|116358|hubicka|2006-08-23 22:29:14|trunk +191|116361|kargl|2006-08-23 23:10:39|trunk +192|116362|kargl|2006-08-23 23:41:19|trunk +193|116368|jvdelisle|2006-08-24 01:10:55|trunk +194|116369|pault|2006-08-24 04:47:28|trunk +195|116374|hubicka|2006-08-24 13:30:45|trunk +196|116375|gary|2006-08-24 14:28:49|trunk +197|116376|kargl|2006-08-24 14:43:42|trunk +198|116379|jason|2006-08-24 15:54:39|trunk +199|116383|kseitz|2006-08-24 18:55:53|trunk +200|116384|hubicka|2006-08-24 19:43:43|trunk +201|116385|mrs|2006-08-24 19:45:30|trunk +202|116392|dannysmith|2006-08-25 00:24:10|trunk +203|116393|pinskia|2006-08-25 07:13:48|trunk +204|116394|nickc|2006-08-25 07:21:47|trunk +205|116395|rguenth|2006-08-25 10:32:03|trunk +206|116399|kazu|2006-08-25 13:39:02|trunk +207|116400|dje|2006-08-25 13:53:39|trunk +208|116402|paolo|2006-08-25 16:02:23|trunk +209|116403|bwilson|2006-08-25 16:13:54|trunk +210|116409|nathan|2006-08-25 16:56:07|trunk +211|116410|mmitchel|2006-08-25 17:03:50|trunk +212|116411|mmitchel|2006-08-25 17:04:35|trunk +213|116415|paolo|2006-08-25 17:11:10|trunk +214|116424|amylaar|2006-08-25 18:51:57|trunk +215|116425|dje|2006-08-25 18:56:08|trunk +216|116431|pbrook|2006-08-25 20:39:48|trunk +217|116435|jsm28|2006-08-25 21:11:46|trunk +218|116436|jsm28|2006-08-25 21:14:24|trunk +219|116439|rguenth|2006-08-25 22:01:28|trunk +220|116450|jsm28|2006-08-25 23:01:16|trunk +221|116455|reichelt|2006-08-26 00:17:10|trunk +222|116463|reichelt|2006-08-26 00:25:59|trunk +223|116464|reichelt|2006-08-26 00:37:48|trunk +224|116467|jakub|2006-08-26 07:31:30|trunk +225|116468|mmitchel|2006-08-26 16:23:33|trunk +226|116469|bwilson|2006-08-26 17:03:22|trunk +227|116470|kargl|2006-08-26 17:13:42|trunk +228|116472|kargl|2006-08-26 17:28:09|trunk +229|116473|lmillward|2006-08-26 17:41:18|trunk +230|116475|jsm28|2006-08-26 18:30:44|trunk +231|116477|rguenth|2006-08-26 19:27:17|trunk +232|116478|dje|2006-08-26 21:36:39|trunk +233|116479|jsm28|2006-08-26 21:38:46|trunk +234|116480|kargl|2006-08-26 21:55:28|trunk +235|116481|sayle|2006-08-26 23:51:14|trunk +236|116487|kazu|2006-08-27 06:46:38|trunk +237|116489|paolo|2006-08-27 15:19:23|trunk +238|116490|lmillward|2006-08-27 15:22:05|trunk +239|116491|mmitchel|2006-08-27 17:45:25|trunk +240|116493|ian|2006-08-27 21:42:55|trunk +241|116494|ian|2006-08-27 23:50:30|trunk +242|116501|sayle|2006-08-28 00:58:47|trunk +243|116502|jvdelisle|2006-08-28 05:14:05|trunk +244|116503|jvdelisle|2006-08-28 05:17:09|trunk +245|116508|paolo|2006-08-28 13:26:22|trunk +246|116509|kazu|2006-08-28 13:51:04|trunk +247|116510|kazu|2006-08-28 17:18:29|trunk +248|116520|paolo|2006-08-28 18:32:35|trunk +249|116527|bkoz|2006-08-28 20:18:22|trunk +250|116529|rakdver|2006-08-28 21:15:19|trunk +251|116541|reichelt|2006-08-28 22:34:55|trunk +252|116550|pinskia|2006-08-29 03:23:04|trunk +253|116551|jason|2006-08-29 04:42:46|trunk +254|116552|pault|2006-08-29 04:51:32|trunk +255|116554|jason|2006-08-29 06:55:03|trunk +256|116555|jason|2006-08-29 06:55:35|trunk +257|116556|jason|2006-08-29 07:10:38|trunk +258|116557|gary|2006-08-29 08:15:29|trunk +259|116558|bkoz|2006-08-29 10:53:04|trunk +260|116559|paolo|2006-08-29 11:46:54|trunk +261|116561|amylaar|2006-08-29 14:34:36|trunk +262|116562|amylaar|2006-08-29 15:08:07|trunk +263|116564|amylaar|2006-08-29 15:52:54|trunk +264|116569|hjl|2006-08-29 18:47:20|trunk +265|116570|kargl|2006-08-29 19:47:31|trunk +266|116577|pinskia|2006-08-30 04:33:10|trunk +267|116578|pault|2006-08-30 05:18:36|trunk +268|116580|kazu|2006-08-30 06:00:35|trunk +269|116582|rakdver|2006-08-30 08:14:29|trunk +270|116583|rguenth|2006-08-30 09:12:48|trunk +271|116584|bkoz|2006-08-30 09:39:45|trunk +272|116586|dj|2006-08-30 13:46:50|trunk +273|116587|dj|2006-08-30 13:48:49|trunk +274|116588|jsm28|2006-08-30 14:35:14|trunk +275|116590|kazu|2006-08-30 15:10:26|trunk +276|116591|jason|2006-08-30 15:51:17|trunk +277|116593|amylaar|2006-08-30 18:57:54|trunk +278|116599|krebbel|2006-08-31 07:43:36|trunk +279|116601|bkoz|2006-08-31 10:45:59|trunk +280|116602|bkoz|2006-08-31 11:46:31|trunk +281|116603|tromey|2006-08-31 17:23:57|trunk +282|116604|sayle|2006-08-31 17:35:32|trunk +283|116605|rakdver|2006-08-31 19:33:56|trunk +284|116606|paolo|2006-08-31 19:52:16|trunk +285|116608|bkoz|2006-08-31 22:20:09|trunk +286|116609|kseitz|2006-08-31 22:37:25|trunk +287|116610|kseitz|2006-08-31 22:37:48|trunk +288|116611|kseitz|2006-08-31 22:56:23|trunk +289|116613|jconner|2006-08-31 23:44:00|trunk +290|116621|gary|2006-09-01 10:06:13|trunk +291|116622|gary|2006-09-01 13:30:50|trunk +292|116623|nathan|2006-09-01 13:46:19|trunk +293|116627|gary|2006-09-01 15:38:00|trunk +294|116633|jconner|2006-09-01 16:56:14|trunk +295|116634|jconner|2006-09-01 16:56:45|trunk +296|116635|kseitz|2006-09-01 17:42:23|trunk +297|116636|kseitz|2006-09-01 17:58:22|trunk +298|116637|jason|2006-09-01 17:59:41|trunk +299|116638|nathan|2006-09-01 18:10:17|trunk +300|116639|geoffk|2006-09-01 19:52:10|trunk +301|116641|rguenth|2006-09-01 20:25:34|trunk +302|116653|dj|2006-09-02 02:38:20|trunk +303|116654|jakub|2006-09-02 06:52:24|trunk +304|116655|jakub|2006-09-02 06:54:04|trunk +305|116656|jakub|2006-09-02 06:55:09|trunk +306|116659|geoffk|2006-09-02 07:26:21|trunk +307|116660|paolo|2006-09-02 08:31:45|trunk +308|116661|lmillward|2006-09-02 14:15:37|trunk +309|116668|jsm28|2006-09-03 11:52:48|trunk +310|116670|jsm28|2006-09-03 11:54:34|trunk +311|116678|paolo|2006-09-04 08:00:35|trunk +312|116679|nathan|2006-09-04 15:21:50|trunk +313|116680|bkoz|2006-09-04 15:41:18|trunk +314|116681|ebotcazou|2006-09-04 16:29:51|trunk +315|116683|ebotcazou|2006-09-04 19:33:24|trunk +316|116690|pault|2006-09-05 04:26:10|trunk +317|116692|ebotcazou|2006-09-05 07:05:08|trunk +318|116694|gary|2006-09-05 07:49:08|trunk +319|116695|rguenth|2006-09-05 08:34:00|trunk +320|116696|rguenth|2006-09-05 08:36:39|trunk +321|116697|rguenth|2006-09-05 08:39:42|trunk +322|116698|paolo|2006-09-05 15:43:47|trunk +323|116699|denisc|2006-09-05 17:23:08|trunk +324|116700|paolo|2006-09-05 17:38:44|trunk +325|116701|bonzini|2006-09-05 17:41:22|trunk +326|116702|geoffk|2006-09-05 18:11:49|trunk +327|116703|kkojima|2006-09-05 21:41:23|trunk +328|116709|jason|2006-09-06 01:15:09|trunk +329|116710|jason|2006-09-06 01:15:39|trunk +330|116711|pault|2006-09-06 04:12:09|trunk +331|116714|jason|2006-09-06 05:25:29|trunk +332|116715|jason|2006-09-06 05:28:08|trunk +333|116716|pinskia|2006-09-06 06:06:55|trunk +334|116717|pinskia|2006-09-06 06:13:22|trunk +335|116718|pinskia|2006-09-06 06:37:06|trunk +336|116719|nickc|2006-09-06 06:58:41|trunk +337|116722|rguenth|2006-09-06 13:47:42|trunk +338|116724|jason|2006-09-06 17:06:00|trunk +339|116727|dnovillo|2006-09-06 21:04:21|trunk +340|116730|kseitz|2006-09-06 22:16:59|trunk diff --git a/gcc-4.8.3/contrib/reghunt/examples/29478.log b/gcc-4.8.3/contrib/reghunt/examples/29478.log new file mode 100644 index 000000000..1ce0be1f3 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29478.log @@ -0,0 +1,78 @@ +Mon Feb 16 17:23:03 PST 2009 LATER_THAN = 1 +Mon Feb 16 17:23:03 PST 2009 EARLIER_THAN = 340 +Mon Feb 16 17:23:03 PST 2009 svn checkout begun for id 340, rev 116730 +Mon Feb 16 17:26:27 PST 2009 svn checkout done +Mon Feb 16 17:26:28 PST 2009 building cc1 for id 340 +Mon Feb 16 17:30:29 PST 2009 build completed +Mon Feb 16 17:30:29 PST 2009 bogus warning detected for bug 29478, id 340 +Mon Feb 16 17:30:29 PST 2009 result for high patch 340 is as expected +Mon Feb 16 17:30:29 PST 2009 svn update begun for id 1, rev 115866 +Mon Feb 16 17:30:55 PST 2009 svn update done +Mon Feb 16 17:30:56 PST 2009 building cc1 for id 1 +Mon Feb 16 17:34:41 PST 2009 build completed +Mon Feb 16 17:34:41 PST 2009 no bogus warning for bug 29478, id 1 +Mon Feb 16 17:34:41 PST 2009 result for low patch 1 is as expected +Mon Feb 16 17:34:41 PST 2009 svn update begun for id 170, rev 116321 +Mon Feb 16 17:34:55 PST 2009 svn update done +Mon Feb 16 17:34:56 PST 2009 building cc1 for id 170 +Mon Feb 16 17:38:40 PST 2009 build completed +Mon Feb 16 17:38:40 PST 2009 no bogus warning for bug 29478, id 170 +Mon Feb 16 17:38:40 PST 2009 search patches later than 170 +Mon Feb 16 17:38:41 PST 2009 svn update begun for id 255, rev 116554 +Mon Feb 16 17:38:52 PST 2009 svn update done +Mon Feb 16 17:38:53 PST 2009 building cc1 for id 255 +Mon Feb 16 17:42:38 PST 2009 build completed +Mon Feb 16 17:42:38 PST 2009 bogus warning detected for bug 29478, id 255 +Mon Feb 16 17:42:38 PST 2009 search patches earlier than 255 +Mon Feb 16 17:42:38 PST 2009 svn update begun for id 212, rev 116411 +Mon Feb 16 17:42:45 PST 2009 svn update done +Mon Feb 16 17:42:46 PST 2009 building cc1 for id 212 +Mon Feb 16 17:46:30 PST 2009 build completed +Mon Feb 16 17:46:30 PST 2009 no bogus warning for bug 29478, id 212 +Mon Feb 16 17:46:30 PST 2009 search patches later than 212 +Mon Feb 16 17:46:30 PST 2009 svn update begun for id 233, rev 116479 +Mon Feb 16 17:46:40 PST 2009 svn update done +Mon Feb 16 17:46:41 PST 2009 building cc1 for id 233 +Mon Feb 16 17:50:26 PST 2009 build completed +Mon Feb 16 17:50:26 PST 2009 bogus warning detected for bug 29478, id 233 +Mon Feb 16 17:50:26 PST 2009 search patches earlier than 233 +Mon Feb 16 17:50:26 PST 2009 svn update begun for id 222, rev 116463 +Mon Feb 16 17:50:31 PST 2009 svn update done +Mon Feb 16 17:50:32 PST 2009 building cc1 for id 222 +Mon Feb 16 17:54:17 PST 2009 build completed +Mon Feb 16 17:54:17 PST 2009 bogus warning detected for bug 29478, id 222 +Mon Feb 16 17:54:17 PST 2009 search patches earlier than 222 +Mon Feb 16 17:54:17 PST 2009 svn update begun for id 217, rev 116435 +Mon Feb 16 17:54:23 PST 2009 svn update done +Mon Feb 16 17:54:23 PST 2009 building cc1 for id 217 +Mon Feb 16 17:58:07 PST 2009 build completed +Mon Feb 16 17:58:07 PST 2009 bogus warning detected for bug 29478, id 217 +Mon Feb 16 17:58:07 PST 2009 search patches earlier than 217 +Mon Feb 16 17:58:08 PST 2009 svn update begun for id 214, rev 116424 +Mon Feb 16 17:58:13 PST 2009 svn update done +Mon Feb 16 17:58:13 PST 2009 building cc1 for id 214 +Mon Feb 16 18:01:59 PST 2009 build completed +Mon Feb 16 18:01:59 PST 2009 bogus warning detected for bug 29478, id 214 +Mon Feb 16 18:01:59 PST 2009 search patches earlier than 214 +Mon Feb 16 18:01:59 PST 2009 svn update begun for id 213, rev 116415 +Mon Feb 16 18:02:05 PST 2009 svn update done +Mon Feb 16 18:02:05 PST 2009 building cc1 for id 213 +Mon Feb 16 18:05:51 PST 2009 build completed +Mon Feb 16 18:05:51 PST 2009 no bogus warning for bug 29478, id 213 +Mon Feb 16 18:05:51 PST 2009 search patches later than 213 +Test result changes with id 214 +------------------------------------------------------------------------ +r116424 | amylaar | 2006-08-25 18:51:57 +0000 (Fri, 25 Aug 2006) | 8 lines + +gcc: + PR tree-optimization/16876 + * c-typeck.c (c_convert_parm_for_inlining): Don't take early + exit if PARM doesn't match VALUE. + +testsuite: + gcc.dg/noncompile/pr16876.c: New test. + +------------------------------------------------------------------------ + + http://gcc.gnu.org/viewcvs?view=rev&rev=116424 + r116424 | amylaar | 2006-08-25 18:51:57 +0000 (Fri, 25 Aug 2006) diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906a.cc b/gcc-4.8.3/contrib/reghunt/examples/29906a.cc new file mode 100644 index 000000000..ef644eee5 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906a.cc @@ -0,0 +1,7 @@ +struct A{ + typedef int T; + virtual ~A(); +}; +struct B:public A{ + using A::T; +}; diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906a.config b/gcc-4.8.3/contrib/reghunt/examples/29906a.config new file mode 100644 index 000000000..e643f96b6 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906a.config @@ -0,0 +1,16 @@ +BUGID=29906a +FIND=break +LANG=c++ +BUILD_KIND=simple +BUG_KIND=ice-on-valid-code +OPTS="-g" + +. ./common.config + +#LOW_PATCH=384 +#HIGH_PATCH=389 + +#msg 0 'NOTE: skipping low patch, already verified' +#SKIP_LOW=1 +#msg 0 'NOTE: skipping high patch, already verified' +#SKIP_HIGH=1 diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906a.list b/gcc-4.8.3/contrib/reghunt/examples/29906a.list new file mode 100644 index 000000000..46b6e7d2c --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906a.list @@ -0,0 +1,623 @@ +1|75951|giovannibajo|2004-01-15 23:49:13|trunk +2|75956|zack|2004-01-16 01:27:38|trunk +3|75957|kazu|2004-01-16 01:44:06|trunk +4|75960|geoffk|2004-01-16 07:07:27|trunk +5|75961|geoffk|2004-01-16 07:20:38|trunk +6|75962|geoffk|2004-01-16 07:28:11|trunk +7|75963|dannysmith|2004-01-16 08:43:45|trunk +8|75964|aj|2004-01-16 08:51:38|trunk +9|75968|rth|2004-01-16 11:30:48|trunk +10|75969|giovannibajo|2004-01-16 12:29:40|trunk +11|75970|giovannibajo|2004-01-16 12:33:28|trunk +12|75971|rodimina|2004-01-16 14:22:23|trunk +13|75975|amylaar|2004-01-16 16:11:56|trunk +14|75976|amylaar|2004-01-16 16:13:52|trunk +15|75977|fnasser|2004-01-16 16:15:49|trunk +16|75978|kazu|2004-01-16 16:59:17|trunk +17|75979|mmitchel|2004-01-16 16:59:30|trunk +18|75980|aph|2004-01-16 17:11:08|trunk +19|75981|aph|2004-01-16 17:16:29|trunk +20|75982|aph|2004-01-16 17:25:26|trunk +21|75983|mmitchel|2004-01-16 17:54:25|trunk +22|75984|kazu|2004-01-16 18:04:22|trunk +23|75985|amylaar|2004-01-16 18:24:09|trunk +24|75986|mmitchel|2004-01-16 18:39:58|trunk +25|75987|amylaar|2004-01-16 18:43:04|trunk +26|75988|hubicka|2004-01-16 18:53:51|trunk +27|75991|mmitchel|2004-01-16 19:28:11|trunk +28|75992|mmitchel|2004-01-16 19:41:35|trunk +29|75993|kho|2004-01-16 20:05:41|trunk +30|75994|ro|2004-01-16 20:58:27|trunk +31|75995|kazu|2004-01-16 21:19:07|trunk +32|75997|fitzsim|2004-01-16 21:55:21|trunk +33|75998|fnasser|2004-01-16 22:26:49|trunk +34|75999|fnasser|2004-01-16 22:30:11|trunk +35|76000|echristo|2004-01-16 22:37:49|trunk +36|76001|reichelt|2004-01-16 23:27:12|trunk +37|76003|tromey|2004-01-16 23:54:22|trunk +38|76004|tromey|2004-01-17 00:01:59|trunk +39|76007|hubicka|2004-01-17 00:03:14|trunk +40|76008|jsm28|2004-01-17 00:04:13|trunk +41|76016|geoffk|2004-01-17 00:37:47|trunk +42|76017|bkoz|2004-01-17 00:51:35|trunk +43|76018|pinskia|2004-01-17 01:19:20|trunk +44|76021|pinskia|2004-01-17 01:57:09|trunk +45|76025|brobecke|2004-01-17 05:30:48|trunk +46|76026|brobecke|2004-01-17 06:20:03|trunk +47|76028|geoffk|2004-01-17 07:46:49|trunk +48|76030|tromey|2004-01-17 08:40:41|trunk +49|76031|geoffk|2004-01-17 09:31:30|trunk +50|76032|hubicka|2004-01-17 11:41:43|trunk +51|76035|hubicka|2004-01-17 12:28:57|trunk +52|76037|gerald|2004-01-17 17:41:36|trunk +53|76038|pinskia|2004-01-17 18:59:46|trunk +54|76041|pinskia|2004-01-17 19:04:05|trunk +55|76043|pinskia|2004-01-17 19:48:50|trunk +56|76058|steven|2004-01-17 21:03:57|trunk +57|76060|drow|2004-01-17 22:11:58|trunk +58|76062|drow|2004-01-17 22:14:17|trunk +59|76064|sayle|2004-01-17 23:49:44|trunk +60|76072|zlaski|2004-01-18 01:15:30|trunk +61|76075|jsm28|2004-01-18 01:20:48|trunk +62|76078|jsm28|2004-01-18 02:10:34|trunk +63|76081|pinskia|2004-01-18 03:46:56|trunk +64|76083|dje|2004-01-18 04:39:34|trunk +65|76084|bernie|2004-01-18 05:07:35|trunk +66|76088|rsandifo|2004-01-18 09:42:11|trunk +67|76090|rsandifo|2004-01-18 09:45:32|trunk +68|76091|paolo|2004-01-18 09:54:46|trunk +69|76092|paolo|2004-01-18 10:51:13|trunk +70|76093|paolo|2004-01-18 11:18:29|trunk +71|76098|jsm28|2004-01-18 11:57:17|trunk +72|76100|rsandifo|2004-01-18 14:01:52|trunk +73|76102|hubicka|2004-01-18 15:10:23|trunk +74|76104|jason|2004-01-18 15:38:08|trunk +75|76105|pinskia|2004-01-18 15:45:51|trunk +76|76108|phython|2004-01-18 19:49:34|trunk +77|76109|pinskia|2004-01-18 19:50:18|trunk +78|76111|sayle|2004-01-18 20:04:59|trunk +79|76112|kazu|2004-01-18 21:25:06|trunk +80|76113|kazu|2004-01-18 21:36:34|trunk +81|76115|hubicka|2004-01-18 21:51:30|trunk +82|76117|drow|2004-01-18 22:37:29|trunk +83|76120|kazu|2004-01-18 22:49:23|trunk +84|76131|mmitchel|2004-01-19 00:47:59|trunk +85|76135|mmitchel|2004-01-19 00:51:56|trunk +86|76138|kazu|2004-01-19 03:08:14|trunk +87|76140|steven|2004-01-19 08:38:38|trunk +88|76141|paolo|2004-01-19 08:53:32|trunk +89|76142|hubicka|2004-01-19 09:43:53|trunk +90|76145|rth|2004-01-19 09:55:42|trunk +91|76146|charlet|2004-01-19 10:37:59|trunk +92|76147|paolo|2004-01-19 12:11:50|trunk +93|76148|kho|2004-01-19 14:08:19|trunk +94|76149|kho|2004-01-19 14:27:45|trunk +95|76150|fnasser|2004-01-19 14:51:54|trunk +96|76151|paolo|2004-01-19 15:10:17|trunk +97|76152|sayle|2004-01-19 15:15:56|trunk +98|76155|law|2004-01-19 16:30:05|trunk +99|76156|ebotcazou|2004-01-19 16:57:05|trunk +100|76158|ebotcazou|2004-01-19 17:03:45|trunk +101|76160|fnasser|2004-01-19 17:32:29|trunk +102|76161|fnasser|2004-01-19 17:38:36|trunk +103|76163|paolo|2004-01-19 18:10:55|trunk +104|76165|fnasser|2004-01-19 18:22:29|trunk +105|76166|kho|2004-01-19 18:41:52|trunk +106|76168|doko|2004-01-19 19:01:59|trunk +107|76170|ebotcazou|2004-01-19 19:17:50|trunk +108|76172|rth|2004-01-19 19:49:33|trunk +109|76173|mmitchel|2004-01-19 20:33:29|trunk +110|76177|mmitchel|2004-01-19 21:24:46|trunk +111|76179|sayle|2004-01-19 21:51:06|trunk +112|76180|mmitchel|2004-01-19 22:10:31|trunk +113|76191|ljrittle|2004-01-20 01:30:03|trunk +114|76192|jsm28|2004-01-20 01:38:27|trunk +115|76193|kcook|2004-01-20 01:52:02|trunk +116|76194|phython|2004-01-20 01:57:58|trunk +117|76195|kkojima|2004-01-20 02:34:23|trunk +118|76197|bothner|2004-01-20 05:17:48|trunk +119|76198|bothner|2004-01-20 05:30:18|trunk +120|76200|bkoz|2004-01-20 06:35:21|trunk +121|76201|bothner|2004-01-20 07:35:21|trunk +122|76202|ebotcazou|2004-01-20 07:38:18|trunk +123|76204|nickc|2004-01-20 10:17:23|trunk +124|76206|steven|2004-01-20 12:11:14|trunk +125|76210|aph|2004-01-20 15:18:33|trunk +126|76211|hpenner|2004-01-20 16:51:07|trunk +127|76212|hpenner|2004-01-20 16:54:34|trunk +128|76213|rakdver|2004-01-20 16:55:56|trunk +129|76215|jason|2004-01-20 17:01:28|trunk +130|76216|denisc|2004-01-20 17:38:44|trunk +131|76220|kazu|2004-01-20 18:29:24|trunk +132|76224|rsandifo|2004-01-20 19:58:59|trunk +133|76226|hubicka|2004-01-20 20:36:18|trunk +134|76227|fitzsim|2004-01-20 20:56:53|trunk +135|76228|fitzsim|2004-01-20 21:05:39|trunk +136|76230|fitzsim|2004-01-20 21:24:09|trunk +137|76231|jakub|2004-01-20 21:25:27|trunk +138|76232|hubicka|2004-01-20 22:08:17|trunk +139|76233|hubicka|2004-01-20 22:16:59|trunk +140|76234|danglin|2004-01-20 22:20:07|trunk +141|76235|amodra|2004-01-20 22:29:24|trunk +142|76237|sayle|2004-01-20 22:59:59|trunk +143|76240|korbb|2004-01-20 23:49:34|trunk +144|76246|korbb|2004-01-21 00:23:04|trunk +145|76249|kcook|2004-01-21 02:01:55|trunk +146|76253|ghazi|2004-01-21 02:53:20|trunk +147|76261|aj|2004-01-21 06:11:09|trunk +148|76264|rakdver|2004-01-21 07:41:49|trunk +149|76269|zack|2004-01-21 10:32:10|trunk +150|76271|charlet|2004-01-21 10:35:18|trunk +151|76274|paolo|2004-01-21 11:29:51|trunk +152|76275|nickc|2004-01-21 12:16:07|trunk +153|76278|djee|2004-01-21 14:39:15|trunk +154|76282|paolo|2004-01-21 15:43:45|trunk +155|76283|falk|2004-01-21 15:52:47|trunk +156|76287|jakub|2004-01-21 16:01:26|trunk +157|76288|aj|2004-01-21 17:26:08|trunk +158|76295|gerald|2004-01-21 19:05:30|trunk +159|76298|danglin|2004-01-21 20:08:22|trunk +160|76299|kho|2004-01-21 20:11:08|trunk +161|76300|kazu|2004-01-21 20:19:23|trunk +162|76301|ctice|2004-01-21 20:23:51|trunk +163|76302|kazu|2004-01-21 20:40:04|trunk +164|76303|ctice|2004-01-21 20:45:25|trunk +165|76304|kazu|2004-01-21 20:52:28|trunk +166|76305|pinskia|2004-01-21 20:53:43|trunk +167|76306|kazu|2004-01-21 21:00:41|trunk +168|76308|danglin|2004-01-21 21:52:35|trunk +169|76314|kcook|2004-01-21 22:25:02|trunk +170|76316|kazu|2004-01-22 00:03:52|trunk +171|76317|uweigand|2004-01-22 00:05:36|trunk +172|76319|kazu|2004-01-22 00:15:25|trunk +173|76325|fitzsim|2004-01-22 00:22:27|trunk +174|76332|pinskia|2004-01-22 02:44:37|trunk +175|76335|kazu|2004-01-22 03:32:20|trunk +176|76339|ebotcazou|2004-01-22 09:15:50|trunk +177|76342|ebotcazou|2004-01-22 09:33:24|trunk +178|76344|graydon|2004-01-22 09:54:19|trunk +179|76345|hubicka|2004-01-22 10:52:20|trunk +180|76346|ebotcazou|2004-01-22 11:15:37|trunk +181|76349|hubicka|2004-01-22 11:35:58|trunk +182|76350|kazu|2004-01-22 11:50:01|trunk +183|76352|sayle|2004-01-22 12:44:54|trunk +184|76353|paolo|2004-01-22 12:46:28|trunk +185|76355|paolo|2004-01-22 14:25:37|trunk +186|76360|uweigand|2004-01-22 16:38:14|trunk +187|76362|drow|2004-01-22 17:00:56|trunk +188|76365|danglin|2004-01-22 17:51:25|trunk +189|76366|dj|2004-01-22 19:10:56|trunk +190|76367|fitzsim|2004-01-22 20:17:43|trunk +191|76368|drow|2004-01-22 20:23:27|trunk +192|76370|kazu|2004-01-22 21:21:13|trunk +193|76372|mkoch|2004-01-22 21:41:53|trunk +194|76373|bwilson|2004-01-22 21:42:33|trunk +195|76375|hubicka|2004-01-22 22:33:51|trunk +196|76376|ro|2004-01-22 23:02:12|trunk +197|76377|uweigand|2004-01-22 23:05:13|trunk +198|76382|jsturm|2004-01-22 23:45:10|trunk +199|76389|jsturm|2004-01-23 00:21:05|trunk +200|76391|ian|2004-01-23 01:30:24|trunk +201|76392|tromey|2004-01-23 01:43:36|trunk +202|76393|sayle|2004-01-23 01:47:15|trunk +203|76394|sayle|2004-01-23 02:03:25|trunk +204|76395|tromey|2004-01-23 02:49:57|trunk +205|76396|phython|2004-01-23 04:31:49|trunk +206|76397|andreast|2004-01-23 04:42:39|trunk +207|76398|ljrittle|2004-01-23 06:54:06|trunk +208|76400|ebotcazou|2004-01-23 09:16:56|trunk +209|76402|charlet|2004-01-23 09:53:05|trunk +210|76403|charlet|2004-01-23 10:30:04|trunk +211|76404|charlet|2004-01-23 10:35:42|trunk +212|76405|hubicka|2004-01-23 11:02:09|trunk +213|76408|mkoch|2004-01-23 11:45:54|trunk +214|76409|mkoch|2004-01-23 11:56:48|trunk +215|76410|mkoch|2004-01-23 12:01:23|trunk +216|76411|mkoch|2004-01-23 12:29:05|trunk +217|76412|mkoch|2004-01-23 12:32:23|trunk +218|76413|mkoch|2004-01-23 12:42:10|trunk +219|76415|amylaar|2004-01-23 13:01:42|trunk +220|76416|jakub|2004-01-23 13:24:58|trunk +221|76419|mkoch|2004-01-23 13:50:10|trunk +222|76420|paolo|2004-01-23 13:57:19|trunk +223|76421|mkoch|2004-01-23 14:07:28|trunk +224|76422|mkoch|2004-01-23 14:37:09|trunk +225|76423|mkoch|2004-01-23 15:15:31|trunk +226|76424|mkoch|2004-01-23 15:19:28|trunk +227|76425|aoliva|2004-01-23 15:29:09|trunk +228|76426|mkoch|2004-01-23 15:29:38|trunk +229|76427|mkoch|2004-01-23 15:53:51|trunk +230|76428|sayle|2004-01-23 16:16:33|trunk +231|76429|drow|2004-01-23 16:33:43|trunk +232|76431|ghazi|2004-01-23 16:47:06|trunk +233|76433|paolo|2004-01-23 16:51:24|trunk +234|76434|ebotcazou|2004-01-23 16:52:07|trunk +235|76437|jakub|2004-01-23 17:32:16|trunk +236|76439|jakub|2004-01-23 17:42:58|trunk +237|76441|zack|2004-01-23 18:13:55|trunk +238|76444|sayle|2004-01-23 18:37:16|trunk +239|76445|pinskia|2004-01-23 18:38:40|trunk +240|76450|ro|2004-01-23 20:40:52|trunk +241|76454|ian|2004-01-23 21:05:21|trunk +242|76456|hubicka|2004-01-23 22:01:55|trunk +243|76457|hubicka|2004-01-23 22:05:19|trunk +244|76458|dje|2004-01-23 22:07:06|trunk +245|76459|bwilson|2004-01-23 22:12:34|trunk +246|76461|rth|2004-01-23 22:23:10|trunk +247|76462|pinskia|2004-01-23 22:41:20|trunk +248|76463|pinskia|2004-01-23 22:45:53|trunk +249|76464|pinskia|2004-01-23 22:57:07|trunk +250|76467|kazu|2004-01-23 23:49:36|trunk +251|76474|ljrittle|2004-01-24 00:21:02|trunk +252|76475|dj|2004-01-24 00:23:24|trunk +253|76476|paolo|2004-01-24 00:27:19|trunk +254|76477|jsm28|2004-01-24 00:30:58|trunk +255|76478|hubicka|2004-01-24 00:38:50|trunk +256|76479|paolo|2004-01-24 01:25:37|trunk +257|76482|zack|2004-01-24 05:27:45|trunk +258|76483|kazu|2004-01-24 05:32:06|trunk +259|76484|kazu|2004-01-24 06:47:03|trunk +260|76486|kazu|2004-01-24 09:54:32|trunk +261|76487|andreast|2004-01-24 09:57:07|trunk +262|76488|kazu|2004-01-24 10:09:48|trunk +263|76490|jakub|2004-01-24 11:01:29|trunk +264|76508|paolo|2004-01-24 11:34:06|trunk +265|76509|paolo|2004-01-24 12:32:54|trunk +266|76512|hubicka|2004-01-24 15:31:04|trunk +267|76513|andreast|2004-01-24 16:13:48|trunk +268|76514|paolo|2004-01-24 16:52:04|trunk +269|76517|paolo|2004-01-24 18:54:23|trunk +270|76519|mkoch|2004-01-24 20:32:57|trunk +271|76520|mkoch|2004-01-24 20:34:41|trunk +272|76522|ian|2004-01-24 20:54:58|trunk +273|76523|mkoch|2004-01-24 20:56:47|trunk +274|76525|kazu|2004-01-24 22:27:20|trunk +275|76532|jsm28|2004-01-25 02:06:24|trunk +276|76534|pinskia|2004-01-25 02:20:16|trunk +277|76537|kazu|2004-01-25 03:28:25|trunk +278|76539|kazu|2004-01-25 03:52:42|trunk +279|76542|pinskia|2004-01-25 06:03:25|trunk +280|76543|ebotcazou|2004-01-25 06:58:33|trunk +281|76547|rsandifo|2004-01-25 10:16:21|trunk +282|76550|paolo|2004-01-25 10:26:46|trunk +283|76551|paolo|2004-01-25 11:07:50|trunk +284|76553|hubicka|2004-01-25 11:11:47|trunk +285|76554|mkoch|2004-01-25 13:08:08|trunk +286|76556|lerdsuwa|2004-01-25 14:18:19|trunk +287|76560|lerdsuwa|2004-01-25 15:03:09|trunk +288|76563|jsm28|2004-01-25 16:48:48|trunk +289|76565|kazu|2004-01-25 17:10:03|trunk +290|76566|kazu|2004-01-25 17:14:41|trunk +291|76568|kazu|2004-01-25 17:23:01|trunk +292|76569|kazu|2004-01-25 17:28:19|trunk +293|76570|kazu|2004-01-25 17:30:51|trunk +294|76571|kazu|2004-01-25 17:35:43|trunk +295|76572|kazu|2004-01-25 17:41:01|trunk +296|76573|kazu|2004-01-25 17:51:51|trunk +297|76574|fitzsim|2004-01-25 18:29:42|trunk +298|76577|fitzsim|2004-01-25 18:36:04|trunk +299|76579|ebotcazou|2004-01-25 20:09:27|trunk +300|76581|kazu|2004-01-25 20:17:44|trunk +301|76584|kazu|2004-01-25 20:23:09|trunk +302|76586|rsandifo|2004-01-25 21:27:37|trunk +303|76588|jsm28|2004-01-25 21:50:01|trunk +304|76590|kazu|2004-01-25 22:20:15|trunk +305|76592|paolo|2004-01-25 22:43:07|trunk +306|76593|giovannibajo|2004-01-25 22:43:08|trunk +307|76594|giovannibajo|2004-01-25 22:46:48|trunk +308|76595|schwab|2004-01-25 23:31:43|trunk +309|76597|cgd|2004-01-25 23:45:48|trunk +310|76598|m.hayes|2004-01-25 23:58:39|trunk +311|76599|kazu|2004-01-26 00:05:38|trunk +312|76600|kazu|2004-01-26 00:09:47|trunk +313|76601|m.hayes|2004-01-26 00:12:05|trunk +314|76607|m.hayes|2004-01-26 00:20:07|trunk +315|76608|m.hayes|2004-01-26 00:28:33|trunk +316|76610|m.hayes|2004-01-26 00:31:50|trunk +317|76611|m.hayes|2004-01-26 00:40:05|trunk +318|76616|mmitchel|2004-01-26 03:13:49|trunk +319|76617|m.hayes|2004-01-26 03:24:39|trunk +320|76618|m.hayes|2004-01-26 03:36:07|trunk +321|76619|ian|2004-01-26 04:44:11|trunk +322|76621|ebotcazou|2004-01-26 07:39:29|trunk +323|76623|rsandifo|2004-01-26 08:07:01|trunk +324|76625|paolo|2004-01-26 09:07:18|trunk +325|76628|ebotcazou|2004-01-26 11:11:11|trunk +326|76630|paolo|2004-01-26 12:58:53|trunk +327|76633|kho|2004-01-26 13:56:59|trunk +328|76634|charlet|2004-01-26 14:47:48|trunk +329|76635|kazu|2004-01-26 15:32:42|trunk +330|76636|kazu|2004-01-26 15:40:04|trunk +331|76638|kazu|2004-01-26 15:50:55|trunk +332|76639|ian|2004-01-26 15:52:38|trunk +333|76640|kazu|2004-01-26 15:54:45|trunk +334|76643|kazu|2004-01-26 16:35:44|trunk +335|76644|kazu|2004-01-26 17:33:37|trunk +336|76645|fjahanian|2004-01-26 17:38:51|trunk +337|76646|fjahanian|2004-01-26 17:40:06|trunk +338|76647|mmitchel|2004-01-26 17:41:50|trunk +339|76648|fjahanian|2004-01-26 17:43:46|trunk +340|76649|fjahanian|2004-01-26 17:45:42|trunk +341|76651|fjahanian|2004-01-26 17:47:42|trunk +342|76652|fjahanian|2004-01-26 17:48:49|trunk +343|76654|kazu|2004-01-26 18:17:58|trunk +344|76655|law|2004-01-26 18:31:07|trunk +345|76657|pinskia|2004-01-26 18:50:29|trunk +346|76659|mmitchel|2004-01-26 20:11:46|trunk +347|76663|kazu|2004-01-26 20:21:11|trunk +348|76664|paolo|2004-01-26 20:23:20|trunk +349|76665|hubicka|2004-01-26 20:34:22|trunk +350|76666|hubicka|2004-01-26 20:38:54|trunk +351|76667|djee|2004-01-26 21:04:06|trunk +352|76668|djee|2004-01-26 21:55:42|trunk +353|76669|ro|2004-01-26 21:56:05|trunk +354|76671|ro|2004-01-26 22:13:38|trunk +355|76674|rth|2004-01-26 22:57:19|trunk +356|76675|rth|2004-01-26 22:59:40|trunk +357|76676|rth|2004-01-26 23:02:04|trunk +358|76677|kazu|2004-01-26 23:22:55|trunk +359|76684|paolo|2004-01-27 00:49:03|trunk +360|76686|ghazi|2004-01-27 02:33:22|trunk +361|76688|jlquinn|2004-01-27 02:58:06|trunk +362|76689|kazu|2004-01-27 02:59:35|trunk +363|76694|jakub|2004-01-27 10:27:40|trunk +364|76696|paolo|2004-01-27 10:46:36|trunk +365|76697|amodra|2004-01-27 11:15:23|trunk +366|76698|paolo|2004-01-27 12:37:37|trunk +367|76701|amylaar|2004-01-27 12:49:31|trunk +368|76702|ebotcazou|2004-01-27 13:29:26|trunk +369|76707|lerdsuwa|2004-01-27 14:24:18|trunk +370|76708|ebotcazou|2004-01-27 14:42:36|trunk +371|76710|ian|2004-01-27 14:48:02|trunk +372|76714|ian|2004-01-27 15:17:52|trunk +373|76724|uweigand|2004-01-27 15:36:22|trunk +374|76725|jlquinn|2004-01-27 15:45:43|trunk +375|76729|kho|2004-01-27 16:39:45|trunk +376|76730|kho|2004-01-27 16:43:12|trunk +377|76732|aph|2004-01-27 17:30:06|trunk +378|76733|aph|2004-01-27 17:33:38|trunk +379|76734|zack|2004-01-27 17:42:59|trunk +380|76735|zack|2004-01-27 18:03:17|trunk +381|76736|mkoch|2004-01-27 18:53:05|trunk +382|76737|mkoch|2004-01-27 18:55:11|trunk +383|76738|phython|2004-01-27 19:10:10|trunk +384|76739|kazu|2004-01-27 19:20:02|trunk +385|76740|kho|2004-01-27 19:29:57|trunk +386|76741|amylaar|2004-01-27 19:54:42|trunk +387|76742|bwilson|2004-01-27 20:24:59|trunk +388|76746|dpatel|2004-01-27 20:36:02|trunk +389|76747|mkoch|2004-01-27 21:00:19|trunk +390|76748|mkoch|2004-01-27 21:05:29|trunk +391|76749|jlquinn|2004-01-27 21:07:30|trunk +392|76750|dje|2004-01-27 21:09:59|trunk +393|76751|djee|2004-01-27 21:28:39|trunk +394|76752|dje|2004-01-27 22:00:55|trunk +395|76753|ghazi|2004-01-27 22:13:28|trunk +396|76754|rsandifo|2004-01-27 22:13:29|trunk +397|76757|mkoch|2004-01-27 22:42:24|trunk +398|76758|zack|2004-01-27 22:48:11|trunk +399|76766|bkoz|2004-01-27 23:41:16|trunk +400|76767|uweigand|2004-01-28 00:14:00|trunk +401|76776|sayle|2004-01-28 01:37:28|trunk +402|76778|kazu|2004-01-28 05:12:22|trunk +403|76779|kazu|2004-01-28 05:27:12|trunk +404|76780|rsandifo|2004-01-28 07:21:21|trunk +405|76783|wilson|2004-01-28 08:17:55|trunk +406|76786|paolo|2004-01-28 10:37:32|trunk +407|76787|nickc|2004-01-28 11:41:38|trunk +408|76791|hubicka|2004-01-28 14:13:35|trunk +409|76792|djee|2004-01-28 16:23:54|trunk +410|76795|bkoz|2004-01-28 17:50:34|trunk +411|76798|zack|2004-01-28 18:13:28|trunk +412|76800|ian|2004-01-28 18:24:11|trunk +413|76801|rth|2004-01-28 18:49:26|trunk +414|76802|mkoch|2004-01-28 19:37:59|trunk +415|76803|ian|2004-01-28 19:43:45|trunk +416|76804|hubicka|2004-01-28 20:15:40|trunk +417|76807|kazu|2004-01-28 21:07:09|trunk +418|76809|mkoch|2004-01-28 21:13:11|trunk +419|76810|bkoz|2004-01-28 21:20:42|trunk +420|76811|kazu|2004-01-28 22:00:26|trunk +421|76812|zack|2004-01-28 22:09:27|trunk +422|76814|danglin|2004-01-28 22:50:32|trunk +423|76821|bkoz|2004-01-29 00:18:40|trunk +424|76822|hubicka|2004-01-29 00:34:09|trunk +425|76825|mmitchel|2004-01-29 01:29:03|trunk +426|76826|kazu|2004-01-29 01:31:15|trunk +427|76827|mmitchel|2004-01-29 01:32:20|trunk +428|76830|kazu|2004-01-29 01:40:48|trunk +429|76831|kazu|2004-01-29 01:47:24|trunk +430|76832|kazu|2004-01-29 01:51:28|trunk +431|76833|kazu|2004-01-29 01:56:28|trunk +432|76834|kazu|2004-01-29 02:06:02|trunk +433|76835|kazu|2004-01-29 02:13:52|trunk +434|76836|kazu|2004-01-29 02:19:44|trunk +435|76837|mmitchel|2004-01-29 02:21:51|trunk +436|76842|wilson|2004-01-29 03:14:35|trunk +437|76844|giovannibajo|2004-01-29 04:19:01|trunk +438|76845|giovannibajo|2004-01-29 04:23:37|trunk +439|76846|giovannibajo|2004-01-29 04:26:50|trunk +440|76848|dberlin|2004-01-29 05:31:47|trunk +441|76850|kazu|2004-01-29 07:35:40|trunk +442|76851|rakdver|2004-01-29 07:47:56|trunk +443|76852|jakub|2004-01-29 08:05:47|trunk +444|76853|zlomek|2004-01-29 08:26:24|trunk +445|76858|rakdver|2004-01-29 12:55:25|trunk +446|76860|aph|2004-01-29 13:19:26|trunk +447|76861|kho|2004-01-29 14:34:31|trunk +448|76864|kazu|2004-01-29 15:59:24|trunk +449|76867|giovannibajo|2004-01-29 16:45:35|trunk +450|76868|mmitchel|2004-01-29 16:47:14|trunk +451|76872|sayle|2004-01-29 17:13:21|trunk +452|76874|sgilbertson|2004-01-29 18:21:01|trunk +453|76886|ian|2004-01-29 18:40:01|trunk +454|76887|dpatel|2004-01-29 18:42:58|trunk +455|76888|jakub|2004-01-29 18:52:28|trunk +456|76891|sgilbertson|2004-01-29 19:28:26|trunk +457|76894|bkoz|2004-01-29 20:42:42|trunk +458|76895|geoffk|2004-01-29 20:56:33|trunk +459|76899|sgilbertson|2004-01-29 22:11:26|trunk +460|76900|sgilbertson|2004-01-29 22:14:57|trunk +461|76919|pinskia|2004-01-30 01:29:29|trunk +462|76922|bkoz|2004-01-30 03:43:00|trunk +463|76923|jason|2004-01-30 04:35:26|trunk +464|76927|membar|2004-01-30 06:33:43|trunk +465|76928|ebotcazou|2004-01-30 07:00:45|trunk +466|76932|ljrittle|2004-01-30 08:24:27|trunk +467|76934|uweigand|2004-01-30 09:07:21|trunk +468|76937|paolo|2004-01-30 09:58:45|trunk +469|76948|steven|2004-01-30 11:20:10|trunk +470|76949|hubicka|2004-01-30 11:28:21|trunk +471|76950|hubicka|2004-01-30 11:28:37|trunk +472|76951|hubicka|2004-01-30 11:36:05|trunk +473|76955|paolo|2004-01-30 13:23:42|trunk +474|76956|membar|2004-01-30 13:43:21|trunk +475|76958|ebotcazou|2004-01-30 14:16:43|trunk +476|76961|ebotcazou|2004-01-30 14:46:43|trunk +477|76963|giovannibajo|2004-01-30 15:08:37|trunk +478|76964|giovannibajo|2004-01-30 15:12:45|trunk +479|76965|kenner|2004-01-30 15:36:11|trunk +480|76970|giovannibajo|2004-01-30 16:35:03|trunk +481|76971|giovannibajo|2004-01-30 16:40:43|trunk +482|76972|matz|2004-01-30 17:01:29|trunk +483|76973|matz|2004-01-30 17:05:09|trunk +484|76974|paolo|2004-01-30 17:06:42|trunk +485|76976|pinskia|2004-01-30 17:43:24|trunk +486|76977|dje|2004-01-30 17:45:01|trunk +487|76978|bkoz|2004-01-30 17:54:10|trunk +488|76979|bkoz|2004-01-30 18:14:42|trunk +489|76981|kazu|2004-01-30 18:22:16|trunk +490|76984|fjahanian|2004-01-30 18:51:35|trunk +491|76985|rth|2004-01-30 19:16:39|trunk +492|76989|hubicka|2004-01-30 20:42:24|trunk +493|76990|dje|2004-01-30 20:47:32|trunk +494|76993|mkoch|2004-01-30 22:01:11|trunk +495|77003|uweigand|2004-01-30 23:10:36|trunk +496|77005|kazu|2004-01-30 23:16:23|trunk +497|77006|paolo|2004-01-30 23:26:13|trunk +498|77008|rth|2004-01-30 23:37:39|trunk +499|77009|kazu|2004-01-30 23:39:01|trunk +500|77017|kcook|2004-01-31 00:50:03|trunk +501|77018|kazu|2004-01-31 02:07:12|trunk +502|77019|dberlin|2004-01-31 02:18:25|trunk +503|77023|pinskia|2004-01-31 04:18:15|trunk +504|77025|kazu|2004-01-31 08:02:55|trunk +505|77026|paolo|2004-01-31 09:21:18|trunk +506|77027|pinskia|2004-01-31 09:49:14|trunk +507|77035|paolo|2004-01-31 15:39:52|trunk +508|77036|uweigand|2004-01-31 17:01:24|trunk +509|77037|kazu|2004-01-31 17:04:51|trunk +510|77040|kazu|2004-01-31 17:31:40|trunk +511|77042|bkoz|2004-01-31 17:38:45|trunk +512|77043|kazu|2004-01-31 17:47:43|trunk +513|77044|paolo|2004-01-31 17:50:46|trunk +514|77045|kazu|2004-01-31 17:58:53|trunk +515|77046|kazu|2004-01-31 18:42:55|trunk +516|77047|kazu|2004-01-31 18:46:11|trunk +517|77048|ebotcazou|2004-01-31 20:09:22|trunk +518|77050|paolo|2004-01-31 21:37:11|trunk +519|77051|kazu|2004-01-31 22:09:22|trunk +520|77052|kazu|2004-01-31 22:12:55|trunk +521|77053|kazu|2004-01-31 22:38:00|trunk +522|77054|kazu|2004-01-31 22:58:46|trunk +523|77055|kazu|2004-01-31 23:08:52|trunk +524|77056|rth|2004-01-31 23:13:23|trunk +525|77057|kazu|2004-01-31 23:21:25|trunk +526|77058|paolo|2004-01-31 23:51:44|trunk +527|77064|cgd|2004-02-01 08:05:50|trunk +528|77065|paolo|2004-02-01 11:25:21|trunk +529|77066|rsandifo|2004-02-01 11:46:42|trunk +530|77070|sayle|2004-02-01 14:59:15|trunk +531|77071|sayle|2004-02-01 15:03:15|trunk +532|77072|jsm28|2004-02-01 15:15:29|trunk +533|77074|ebotcazou|2004-02-01 15:19:12|trunk +534|77076|kazu|2004-02-01 17:01:34|trunk +535|77077|paolo|2004-02-01 17:34:44|trunk +536|77078|paolo|2004-02-01 17:56:06|trunk +537|77079|mkoch|2004-02-01 20:05:03|trunk +538|77080|kazu|2004-02-01 21:21:45|trunk +539|77081|paolo|2004-02-01 22:14:43|trunk +540|77082|paolo|2004-02-01 23:19:55|trunk +541|77088|hubicka|2004-02-02 00:17:18|trunk +542|77089|giovannibajo|2004-02-02 01:07:08|trunk +543|77090|giovannibajo|2004-02-02 01:09:22|trunk +544|77091|giovannibajo|2004-02-02 01:11:03|trunk +545|77093|fitzsim|2004-02-02 02:18:33|trunk +546|77094|kazu|2004-02-02 02:32:23|trunk +547|77098|kazu|2004-02-02 06:31:08|trunk +548|77100|ebotcazou|2004-02-02 09:17:19|trunk +549|77105|paolo|2004-02-02 10:44:28|trunk +550|77107|ebotcazou|2004-02-02 12:20:52|trunk +551|77110|charlet|2004-02-02 12:32:01|trunk +552|77111|paolo|2004-02-02 12:39:55|trunk +553|77113|paolo|2004-02-02 13:04:36|trunk +554|77114|giovannibajo|2004-02-02 14:33:11|trunk +555|77116|kazu|2004-02-02 15:18:28|trunk +556|77119|ebotcazou|2004-02-02 16:12:36|trunk +557|77122|charlet|2004-02-02 16:26:37|trunk +558|77124|ebotcazou|2004-02-02 16:33:03|trunk +559|77125|paolo|2004-02-02 16:35:09|trunk +560|77127|mmitchel|2004-02-02 16:53:17|trunk +561|77128|dje|2004-02-02 18:20:55|trunk +562|77131|giovannibajo|2004-02-02 18:55:07|trunk +563|77134|zack|2004-02-02 20:06:23|trunk +564|77136|echristo|2004-02-02 20:20:58|trunk +565|77137|kazu|2004-02-02 22:05:41|trunk +566|77138|echristo|2004-02-02 22:50:10|trunk +567|77140|paolo|2004-02-02 23:45:34|trunk +568|77146|amodra|2004-02-03 00:40:26|trunk +569|77148|kazu|2004-02-03 00:52:33|trunk +570|77150|bkoz|2004-02-03 01:26:12|trunk +571|77151|tromey|2004-02-03 02:56:20|trunk +572|77152|sayle|2004-02-03 03:03:43|trunk +573|77153|jlquinn|2004-02-03 03:33:24|trunk +574|77156|jlquinn|2004-02-03 04:01:15|trunk +575|77158|rth|2004-02-03 04:37:29|trunk +576|77159|kazu|2004-02-03 05:15:46|trunk +577|77160|kazu|2004-02-03 05:39:57|trunk +578|77161|kazu|2004-02-03 06:43:59|trunk +579|77162|kazu|2004-02-03 07:08:29|trunk +580|77164|pinskia|2004-02-03 07:27:37|trunk +581|77167|paolo|2004-02-03 11:21:01|trunk +582|77168|paolo|2004-02-03 11:22:41|trunk +583|77169|ebotcazou|2004-02-03 12:36:23|trunk +584|77170|paolo|2004-02-03 13:38:28|trunk +585|77171|pbrook|2004-02-03 14:45:44|trunk +586|77173|membar|2004-02-03 16:07:24|trunk +587|77175|sje|2004-02-03 16:39:42|trunk +588|77176|mmitchel|2004-02-03 16:53:27|trunk +589|77178|fitzsim|2004-02-03 17:10:56|trunk +590|77180|pkoning|2004-02-03 17:36:02|trunk +591|77182|paolo|2004-02-03 17:59:05|trunk +592|77183|mmitchel|2004-02-03 17:59:58|trunk +593|77185|amylaar|2004-02-03 19:52:23|trunk +594|77186|mmitchel|2004-02-03 20:00:47|trunk +595|77187|mmitchel|2004-02-03 20:01:59|trunk +596|77191|rth|2004-02-03 21:24:39|trunk +597|77192|sayle|2004-02-03 21:31:00|trunk +598|77194|kazu|2004-02-03 22:14:48|trunk +599|77195|rsandifo|2004-02-03 22:38:34|trunk +600|77198|paolo|2004-02-03 23:34:52|trunk +601|77199|geoffk|2004-02-03 23:44:40|trunk +602|77200|steven|2004-02-03 23:45:52|trunk +603|77201|hubicka|2004-02-03 23:53:48|trunk +604|77203|tromey|2004-02-04 00:07:19|trunk +605|77216|kazu|2004-02-04 05:13:43|trunk +606|77217|kazu|2004-02-04 05:33:13|trunk +607|77219|kazu|2004-02-04 05:40:42|trunk +608|77220|kazu|2004-02-04 05:53:20|trunk +609|77221|kazu|2004-02-04 06:07:39|trunk +610|77224|kazu|2004-02-04 06:12:54|trunk +611|77225|bkoz|2004-02-04 06:21:21|trunk +612|77226|kazu|2004-02-04 06:32:51|trunk +613|77233|charlet|2004-02-04 11:06:19|trunk +614|77236|giovannibajo|2004-02-04 11:26:26|trunk +615|77237|giovannibajo|2004-02-04 11:28:30|trunk +616|77238|giovannibajo|2004-02-04 11:29:57|trunk +617|77239|giovannibajo|2004-02-04 11:30:20|trunk +618|77244|pbrook|2004-02-04 12:22:42|trunk +619|77247|ghazi|2004-02-04 13:40:25|trunk +620|77249|ian|2004-02-04 13:43:43|trunk +621|77253|uweigand|2004-02-04 15:55:33|trunk +622|77256|bkoz|2004-02-04 17:37:10|trunk +623|77257|aldyh|2004-02-04 17:38:22|trunk diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906a.log b/gcc-4.8.3/contrib/reghunt/examples/29906a.log new file mode 100644 index 000000000..4a9f28237 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906a.log @@ -0,0 +1,129 @@ +Mon Feb 16 18:06:01 PST 2009 LATER_THAN = 1 +Mon Feb 16 18:06:01 PST 2009 EARLIER_THAN = 623 +Mon Feb 16 18:06:01 PST 2009 svn checkout begun for id 623, rev 77257 +Mon Feb 16 18:08:50 PST 2009 svn checkout done +Mon Feb 16 18:08:51 PST 2009 building cc1plus for id 623 +Mon Feb 16 18:14:43 PST 2009 build completed +Mon Feb 16 18:14:43 PST 2009 compilation failed for bug 29906a, id 623 +Mon Feb 16 18:14:43 PST 2009 result for high patch 623 is as expected +Mon Feb 16 18:14:43 PST 2009 svn update begun for id 1, rev 75951 +Mon Feb 16 18:15:05 PST 2009 svn update done +Mon Feb 16 18:15:06 PST 2009 building cc1plus for id 1 +Mon Feb 16 18:20:58 PST 2009 build completed +Mon Feb 16 18:20:58 PST 2009 test compiled successfully for bug 29906a, id 1 +Mon Feb 16 18:20:58 PST 2009 result for low patch 1 is as expected +Mon Feb 16 18:20:58 PST 2009 svn update begun for id 312, rev 76600 +Mon Feb 16 18:21:09 PST 2009 svn update done +Mon Feb 16 18:21:10 PST 2009 building cc1plus for id 312 +Mon Feb 16 18:27:03 PST 2009 build completed +Mon Feb 16 18:27:03 PST 2009 test compiled successfully for bug 29906a, id 312 +Mon Feb 16 18:27:03 PST 2009 search patches later than 312 +Mon Feb 16 18:27:03 PST 2009 svn update begun for id 467, rev 76934 +Mon Feb 16 18:27:12 PST 2009 svn update done +Mon Feb 16 18:27:13 PST 2009 building cc1plus for id 467 +Mon Feb 16 18:33:05 PST 2009 build completed +Mon Feb 16 18:33:05 PST 2009 compilation failed for bug 29906a, id 467 +Mon Feb 16 18:33:05 PST 2009 search patches earlier than 467 +Mon Feb 16 18:33:06 PST 2009 svn update begun for id 389, rev 76747 +Mon Feb 16 18:33:14 PST 2009 svn update done +Mon Feb 16 18:33:15 PST 2009 building cc1plus for id 389 +Mon Feb 16 18:39:07 PST 2009 build completed +Mon Feb 16 18:39:07 PST 2009 compilation failed for bug 29906a, id 389 +Mon Feb 16 18:39:07 PST 2009 search patches earlier than 389 +Mon Feb 16 18:39:07 PST 2009 svn update begun for id 350, rev 76666 +Mon Feb 16 18:39:14 PST 2009 svn update done +Mon Feb 16 18:39:14 PST 2009 building cc1plus for id 350 +Mon Feb 16 18:45:07 PST 2009 build completed +Mon Feb 16 18:45:08 PST 2009 test compiled successfully for bug 29906a, id 350 +Mon Feb 16 18:45:08 PST 2009 search patches later than 350 +Mon Feb 16 18:45:08 PST 2009 svn update begun for id 369, rev 76707 +Mon Feb 16 18:45:12 PST 2009 svn update done +Mon Feb 16 18:45:12 PST 2009 building cc1plus for id 369 +Mon Feb 16 18:51:05 PST 2009 build completed +Mon Feb 16 18:51:05 PST 2009 test compiled successfully for bug 29906a, id 369 +Mon Feb 16 18:51:05 PST 2009 search patches later than 369 +Mon Feb 16 18:51:05 PST 2009 svn update begun for id 379, rev 76734 +Mon Feb 16 18:51:10 PST 2009 svn update done +Mon Feb 16 18:51:10 PST 2009 building cc1plus for id 379 +Mon Feb 16 18:57:02 PST 2009 build completed +Mon Feb 16 18:57:03 PST 2009 test compiled successfully for bug 29906a, id 379 +Mon Feb 16 18:57:03 PST 2009 search patches later than 379 +Mon Feb 16 18:57:03 PST 2009 svn update begun for id 384, rev 76739 +Mon Feb 16 18:57:07 PST 2009 svn update done +Mon Feb 16 18:57:07 PST 2009 building cc1plus for id 384 +Mon Feb 16 19:03:02 PST 2009 build completed +Mon Feb 16 19:03:02 PST 2009 test compiled successfully for bug 29906a, id 384 +Mon Feb 16 19:03:02 PST 2009 search patches later than 384 +Mon Feb 16 19:03:02 PST 2009 svn update begun for id 386, rev 76741 +Mon Feb 16 19:03:08 PST 2009 svn update done +Mon Feb 16 19:03:08 PST 2009 building cc1plus for id 386 +Mon Feb 16 19:09:00 PST 2009 build completed +Mon Feb 16 19:09:00 PST 2009 test compiled successfully for bug 29906a, id 386 +Mon Feb 16 19:09:00 PST 2009 search patches later than 386 +Mon Feb 16 19:09:00 PST 2009 svn update begun for id 387, rev 76742 +Mon Feb 16 19:09:04 PST 2009 svn update done +Mon Feb 16 19:09:04 PST 2009 building cc1plus for id 387 +Mon Feb 16 19:14:57 PST 2009 build completed +Mon Feb 16 19:14:58 PST 2009 test compiled successfully for bug 29906a, id 387 +Mon Feb 16 19:14:58 PST 2009 search patches later than 387 +Mon Feb 16 19:14:58 PST 2009 svn update begun for id 388, rev 76746 +Mon Feb 16 19:15:02 PST 2009 svn update done +Mon Feb 16 19:15:02 PST 2009 building cc1plus for id 388 +Mon Feb 16 19:20:55 PST 2009 build completed +Mon Feb 16 19:20:56 PST 2009 compilation failed for bug 29906a, id 388 +Mon Feb 16 19:20:56 PST 2009 search patches earlier than 388 +Test result changes with id 388 +------------------------------------------------------------------------ +r76746 | dpatel | 2004-01-27 20:36:02 +0000 (Tue, 27 Jan 2004) | 47 lines + + +2004-01-27 Devang Patel <dpatel@apple.com> + + * Makefile.in (dwarf2out.o): Depend on input.h + * dbxout.c (dbx_debug_hooks): Add new empty hook for + imported_module_or_decl. + (xcoff_debug_hooks): Same. + * sdbout.c (sdb_debug_hooks): Same. + * vmsdbgout.c (vmsdbg_debug_hooks): Same. + * debug.c (do_nothing_debug_hooks): Same. + (debug_nothing_tree_tree): New function. + * debug.h (gcc_debug_hooks): New hook, imported_module_or_decl. + * dwarf2out.c: Include input.h. + (dwarf2_debug_hooks): Add new hook for imported_module_or_decl. + (remove_child_TAG): New function. + (dwarf_tag_name): Handle DW_TAG_imported_module. + (gen_subprogram_die): Equate decl number to declaration die. Do not + remove all children dies while reusing declaration die for definition. + Instead, selectively remove only formal parameters. + (gen_variable_die): Equate variable decl to declaration die. + (gen_field_die): Equate field decl to line number. + (force_namespace_die): Replace it with ... + (force_decl_die): ... this. + (force_type_die): New function. + (setup_namespace_context): Replace use of force_namespace_die() with + force_decl_die(). + (gen_namespace_die): Same. + (dwarf2out_imported_module_or_decl): New function. + + testsuite: + + * g++.dg/debug/namespace1.C: New test. + + cp: + + * name-lookup.c: Include "debug.h" + (do_namespace_alias): Invoke debug_hooks to emit debug info + for namespace alias. + (do_local_using_decl): Invoke debug_hooks to emit debug info + for using decl. + (do_class_using_decl): Same. + (do_toplevel_using_decl): Same. + (do_using_directive): Same. + (cp_emit_debug_info_for_using): New function. + * Make-lang.in (cp/parser.o): Depend on debug.h + (cp/name-lookup.o): Same. + +------------------------------------------------------------------------ + + http://gcc.gnu.org/viewcvs?view=rev&rev=76746 + r76746 | dpatel | 2004-01-27 20:36:02 +0000 (Tue, 27 Jan 2004) diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906b.cc b/gcc-4.8.3/contrib/reghunt/examples/29906b.cc new file mode 100644 index 000000000..ef644eee5 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906b.cc @@ -0,0 +1,7 @@ +struct A{ + typedef int T; + virtual ~A(); +}; +struct B:public A{ + using A::T; +}; diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906b.config b/gcc-4.8.3/contrib/reghunt/examples/29906b.config new file mode 100644 index 000000000..ad6bd0b0e --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906b.config @@ -0,0 +1,19 @@ +BUGID=29906b +FIND=fix +LANG=c++ +BUILD_KIND=full +BUG_KIND=ice-on-valid-code +OPTS="-g" +REG_CONFOPTS="--disable-bootstrap" + +. ./common.config + +#LOW_PATCH=112 +#HIGH_PATCH=121 + +#msg 0 'NOTE: skipping low patch, already verified' +#SKIP_LOW=1 +msg 0 'NOTE: skipping high patch, already verified' +SKIP_HIGH=1 + +#REG_IDLIST="11 21 31 41 51 71 81 91 101 111" diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906b.list b/gcc-4.8.3/contrib/reghunt/examples/29906b.list new file mode 100644 index 000000000..60fd2adcb --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906b.list @@ -0,0 +1,556 @@ +1|112078|jvdelisle|2006-03-15 07:03:20|trunk +2|112079|jvdelisle|2006-03-15 07:08:06|trunk +3|112080|ebotcazou|2006-03-15 07:49:33|trunk +4|112081|schwab|2006-03-15 10:14:51|trunk +5|112082|rakdver|2006-03-15 10:50:46|trunk +6|112083|kkojima|2006-03-15 11:50:24|trunk +7|112084|reichelt|2006-03-15 15:27:11|trunk +8|112085|amylaar|2006-03-15 15:52:34|trunk +9|112089|kazu|2006-03-15 16:14:55|trunk +10|112090|danglin|2006-03-15 16:49:20|trunk +11|112092|tromey|2006-03-15 17:39:16|trunk +12|112093|tromey|2006-03-15 18:29:44|trunk +13|112094|tromey|2006-03-15 18:45:02|trunk +14|112095|daney|2006-03-15 19:10:23|trunk +15|112098|daney|2006-03-15 19:28:42|trunk +16|112099|pbrook|2006-03-15 20:22:56|trunk +17|112102|tromey|2006-03-16 00:08:12|trunk +18|112108|ghazi|2006-03-16 01:00:01|trunk +19|112113|danglin|2006-03-16 01:32:19|trunk +20|112115|tromey|2006-03-16 01:54:51|trunk +21|112121|geoffk|2006-03-16 02:37:09|trunk +22|112122|kkojima|2006-03-16 02:44:10|trunk +23|112125|mkuvyrkov|2006-03-16 05:17:41|trunk +24|112126|mkuvyrkov|2006-03-16 05:20:39|trunk +25|112127|mkuvyrkov|2006-03-16 05:23:21|trunk +26|112128|mkuvyrkov|2006-03-16 05:27:03|trunk +27|112129|mkuvyrkov|2006-03-16 05:29:44|trunk +28|112131|krebbel|2006-03-16 08:15:35|trunk +29|112136|sayle|2006-03-16 16:34:05|trunk +30|112138|pbrook|2006-03-16 16:54:59|trunk +31|112142|tromey|2006-03-16 19:08:07|trunk +32|112147|sayle|2006-03-16 19:47:19|trunk +33|112149|rsandifo|2006-03-16 20:21:11|trunk +34|112150|rsandifo|2006-03-16 20:24:42|trunk +35|112160|jsm28|2006-03-16 23:58:00|trunk +36|112162|sayle|2006-03-17 00:02:53|trunk +37|112168|geoffk|2006-03-17 00:35:32|trunk +38|112169|danglin|2006-03-17 01:12:33|trunk +39|112170|aoliva|2006-03-17 06:08:49|trunk +40|112171|steven|2006-03-17 07:11:35|trunk +41|112173|amylaar|2006-03-17 14:29:08|trunk +42|112174|pbrook|2006-03-17 14:48:58|trunk +43|112175|dje|2006-03-17 15:37:33|trunk +44|112176|dje|2006-03-17 16:45:46|trunk +45|112177|rguenth|2006-03-17 17:38:51|trunk +46|112180|sje|2006-03-17 18:42:40|trunk +47|112198|jvdelisle|2006-03-18 01:56:07|trunk +48|112199|jvdelisle|2006-03-18 01:59:50|trunk +49|112201|ghazi|2006-03-18 17:08:54|trunk +50|112204|jsm28|2006-03-18 21:44:50|trunk +51|112210|pault|2006-03-19 10:36:09|trunk +52|112212|pault|2006-03-19 12:56:31|trunk +53|112215|dje|2006-03-19 20:57:43|trunk +54|112217|dje|2006-03-19 23:12:17|trunk +55|112223|amodra|2006-03-20 07:56:35|trunk +56|112224|rguenth|2006-03-20 08:55:50|trunk +57|112225|dje|2006-03-20 16:09:52|trunk +58|112227|pinskia|2006-03-20 21:00:18|trunk +59|112229|steven|2006-03-20 21:22:55|trunk +60|112230|tkoenig|2006-03-20 21:56:00|trunk +61|112231|kkojima|2006-03-20 22:58:32|trunk +62|112232|rsandifo|2006-03-20 23:22:13|trunk +63|112239|jason|2006-03-21 03:19:06|trunk +64|112240|law|2006-03-21 03:44:56|trunk +65|112241|jason|2006-03-21 04:00:36|trunk +66|112242|law|2006-03-21 05:07:37|trunk +67|112243|toon|2006-03-21 06:32:57|trunk +68|112246|ebotcazou|2006-03-21 11:15:44|trunk +69|112247|paolo|2006-03-21 12:25:11|trunk +70|112248|bernds|2006-03-21 13:07:33|trunk +71|112250|jason|2006-03-21 16:15:25|trunk +72|112251|jakub|2006-03-21 16:21:24|trunk +73|112252|matz|2006-03-21 17:27:56|trunk +74|112253|jakub|2006-03-21 18:35:20|trunk +75|112254|pinskia|2006-03-21 18:58:50|trunk +76|112255|ebotcazou|2006-03-21 20:59:11|trunk +77|112256|law|2006-03-21 21:01:42|trunk +78|112257|sje|2006-03-21 21:12:00|trunk +79|112258|ghazi|2006-03-21 21:17:54|trunk +80|112259|sje|2006-03-21 21:19:10|trunk +81|112261|rsandifo|2006-03-21 21:49:13|trunk +82|112264|janis|2006-03-21 23:50:37|trunk +83|112270|jason|2006-03-22 04:20:52|trunk +84|112275|jason|2006-03-22 05:08:48|trunk +85|112278|pault|2006-03-22 05:13:13|trunk +86|112279|rsandifo|2006-03-22 07:21:00|trunk +87|112280|rsandifo|2006-03-22 07:23:00|trunk +88|112281|rsandifo|2006-03-22 07:54:45|trunk +89|112282|rguenth|2006-03-22 11:01:38|trunk +90|112283|rth|2006-03-22 12:50:45|trunk +91|112285|jiez|2006-03-22 14:53:12|trunk +92|112286|paolo|2006-03-22 15:13:46|trunk +93|112287|jb|2006-03-22 16:00:23|trunk +94|112289|law|2006-03-22 18:00:50|trunk +95|112290|tkoenig|2006-03-22 19:09:11|trunk +96|112292|reichelt|2006-03-22 19:36:22|trunk +97|112296|reichelt|2006-03-22 21:42:34|trunk +98|112298|reichelt|2006-03-22 21:45:13|trunk +99|112302|ghazi|2006-03-22 23:18:38|trunk +100|112312|dje|2006-03-23 04:20:38|trunk +101|112315|rsandifo|2006-03-23 09:29:15|trunk +102|112316|rakdver|2006-03-23 10:33:38|trunk +103|112317|rakdver|2006-03-23 10:45:09|trunk +104|112319|pinskia|2006-03-23 15:09:51|trunk +105|112322|rth|2006-03-23 15:49:00|trunk +106|112323|rth|2006-03-23 15:51:10|trunk +107|112328|mkuvyrkov|2006-03-23 18:23:53|trunk +108|112331|amylaar|2006-03-23 21:39:32|trunk +109|112332|amylaar|2006-03-23 22:10:41|trunk +110|112334|amodra|2006-03-23 22:23:24|trunk +111|112340|amodra|2006-03-23 23:15:46|trunk +112|112346|jsm28|2006-03-24 01:59:35|trunk +113|112348|law|2006-03-24 07:51:32|trunk +114|112349|ebotcazou|2006-03-24 10:09:01|trunk +115|112350|bernds|2006-03-24 15:53:23|trunk +116|112351|jakub|2006-03-24 16:14:40|trunk +117|112352|denisc|2006-03-24 16:30:19|trunk +118|112355|andreast|2006-03-24 17:59:29|trunk +119|112357|krebbel|2006-03-24 19:09:11|trunk +120|112359|dje|2006-03-24 20:49:29|trunk +121|112360|carlos|2006-03-24 21:17:41|trunk +122|112361|geoffk|2006-03-24 21:59:48|trunk +123|112362|geoffk|2006-03-24 22:03:19|trunk +124|112363|jimb|2006-03-24 22:39:45|trunk +125|112365|law|2006-03-24 23:21:27|trunk +126|112372|geoffk|2006-03-25 00:54:40|trunk +127|112373|sayle|2006-03-25 01:28:11|trunk +128|112374|daney|2006-03-25 01:53:48|trunk +129|112377|sayle|2006-03-25 15:01:42|trunk +130|112378|hjl|2006-03-25 15:34:00|trunk +131|112379|uros|2006-03-25 17:32:34|trunk +132|112380|dberlin|2006-03-25 19:17:26|trunk +133|112381|tkoenig|2006-03-25 21:15:48|trunk +134|112382|tkoenig|2006-03-25 21:31:48|trunk +135|112383|nemet|2006-03-25 21:58:01|trunk +136|112384|kargl|2006-03-25 22:08:50|trunk +137|112390|jvdelisle|2006-03-26 02:15:44|trunk +138|112392|kargl|2006-03-26 05:20:09|trunk +139|112398|dje|2006-03-26 17:15:43|trunk +140|112399|spop|2006-03-26 20:48:05|trunk +141|112400|amodra|2006-03-26 22:48:22|trunk +142|112407|jvdelisle|2006-03-27 05:59:37|trunk +143|112408|geoffk|2006-03-27 06:09:48|trunk +144|112409|geoffk|2006-03-27 06:14:55|trunk +145|112410|jvdelisle|2006-03-27 06:55:20|trunk +146|112416|jakub|2006-03-27 12:27:40|trunk +147|112417|jakub|2006-03-27 12:32:51|trunk +148|112418|krebbel|2006-03-27 13:15:46|trunk +149|112421|amylaar|2006-03-27 14:11:14|trunk +150|112422|amylaar|2006-03-27 15:59:27|trunk +151|112423|bernds|2006-03-27 16:25:16|trunk +152|112424|dje|2006-03-27 17:03:56|trunk +153|112427|mkuvyrkov|2006-03-27 22:38:06|trunk +154|112428|mkuvyrkov|2006-03-27 22:59:07|trunk +155|112437|spop|2006-03-28 04:19:26|trunk +156|112438|sayle|2006-03-28 05:01:27|trunk +157|112442|pault|2006-03-28 10:13:50|trunk +158|112447|paolo|2006-03-28 12:54:04|trunk +159|112451|dberlin|2006-03-28 14:36:56|trunk +160|112453|law|2006-03-28 15:35:47|trunk +161|112454|abalkiss|2006-03-28 16:12:52|trunk +162|112455|sayle|2006-03-28 17:06:19|trunk +163|112456|mkuvyrkov|2006-03-28 17:33:41|trunk +164|112459|sayle|2006-03-28 17:55:26|trunk +165|112463|denisc|2006-03-28 18:56:10|trunk +166|112464|tromey|2006-03-28 19:02:25|trunk +167|112465|tromey|2006-03-28 19:05:21|trunk +168|112466|law|2006-03-28 19:10:11|trunk +169|112469|sayle|2006-03-28 19:38:28|trunk +170|112474|kargl|2006-03-28 22:15:52|trunk +171|112476|kkojima|2006-03-28 22:21:41|trunk +172|112483|rakdver|2006-03-29 01:34:51|trunk +173|112484|rakdver|2006-03-29 01:41:27|trunk +174|112491|krebbel|2006-03-29 11:55:53|trunk +175|112493|pbrook|2006-03-29 15:21:13|trunk +176|112494|tromey|2006-03-29 15:22:30|trunk +177|112499|tromey|2006-03-29 16:31:53|trunk +178|112500|pbrook|2006-03-29 16:33:54|trunk +179|112502|spop|2006-03-29 17:20:24|trunk +180|112503|andreast|2006-03-29 18:47:39|trunk +181|112504|pbrook|2006-03-29 19:14:57|trunk +182|112506|tromey|2006-03-29 20:13:23|trunk +183|112507|spop|2006-03-29 20:25:23|trunk +184|112508|dje|2006-03-29 21:07:12|trunk +185|112510|tromey|2006-03-29 21:33:08|trunk +186|112511|sayle|2006-03-29 21:55:34|trunk +187|112512|dje|2006-03-29 22:30:23|trunk +188|112513|sayle|2006-03-29 22:40:17|trunk +189|112514|bkoz|2006-03-29 22:46:44|trunk +190|112515|dje|2006-03-29 22:46:47|trunk +191|112516|dje|2006-03-29 22:58:32|trunk +192|112517|dje|2006-03-29 23:08:11|trunk +193|112518|dje|2006-03-29 23:17:23|trunk +194|112519|dje|2006-03-29 23:23:28|trunk +195|112522|dje|2006-03-29 23:58:31|trunk +196|112529|sayle|2006-03-30 01:35:22|trunk +197|112530|rguenth|2006-03-30 12:11:16|trunk +198|112534|bonzini|2006-03-30 14:31:13|trunk +199|112535|jiez|2006-03-30 14:48:05|trunk +200|112537|mkuvyrkov|2006-03-30 15:33:18|trunk +201|112538|mkuvyrkov|2006-03-30 15:41:00|trunk +202|112539|tkoenig|2006-03-30 16:30:26|trunk +203|112540|tromey|2006-03-30 16:39:17|trunk +204|112542|tromey|2006-03-30 16:59:27|trunk +205|112543|sayle|2006-03-30 17:47:48|trunk +206|112545|carlos|2006-03-30 20:20:10|trunk +207|112546|fxcoudert|2006-03-30 22:00:21|trunk +208|112547|sayle|2006-03-30 22:37:55|trunk +209|112549|geoffk|2006-03-30 23:46:32|trunk +210|112555|amodra|2006-03-31 00:27:51|trunk +211|112558|bdavis|2006-03-31 00:47:13|trunk +212|112561|amodra|2006-03-31 01:25:35|trunk +213|112563|mmitchel|2006-03-31 02:03:12|trunk +214|112564|bje|2006-03-31 03:08:41|trunk +215|112567|sayle|2006-03-31 03:53:47|trunk +216|112570|jvdelisle|2006-03-31 05:11:03|trunk +217|112571|jvdelisle|2006-03-31 05:15:42|trunk +218|112574|aph|2006-03-31 11:43:43|trunk +219|112576|denisc|2006-03-31 13:32:44|trunk +220|112579|jsm28|2006-03-31 17:04:41|trunk +221|112580|jsm28|2006-03-31 17:05:06|trunk +222|112587|andreast|2006-03-31 20:38:55|trunk +223|112591|dj|2006-03-31 21:53:04|trunk +224|112592|mmitchel|2006-03-31 22:16:35|trunk +225|112593|kkojima|2006-03-31 22:31:05|trunk +226|112594|kargl|2006-04-01 00:04:46|trunk +227|112601|jsm28|2006-04-01 00:21:46|trunk +228|112603|rth|2006-04-01 00:37:13|trunk +229|112604|bwilson|2006-04-01 01:29:11|trunk +230|112605|sayle|2006-04-01 07:11:35|trunk +231|112607|sayle|2006-04-01 19:16:01|trunk +232|112608|sayle|2006-04-01 19:19:22|trunk +233|112610|fxcoudert|2006-04-01 21:24:24|trunk +234|112611|ebotcazou|2006-04-01 21:34:27|trunk +235|112619|sayle|2006-04-02 02:38:01|trunk +236|112620|spop|2006-04-02 04:08:02|trunk +237|112621|spop|2006-04-02 04:27:40|trunk +238|112623|spop|2006-04-02 14:08:02|trunk +239|112625|eedelman|2006-04-02 17:00:39|trunk +240|112626|sayle|2006-04-02 22:23:44|trunk +241|112633|sayle|2006-04-03 03:07:40|trunk +242|112634|pault|2006-04-03 04:20:57|trunk +243|112635|spop|2006-04-03 09:59:38|trunk +244|112636|aph|2006-04-03 10:15:25|trunk +245|112637|bonzini|2006-04-03 11:20:07|trunk +246|112638|bonzini|2006-04-03 11:23:04|trunk +247|112640|aph|2006-04-03 14:31:56|trunk +248|112642|law|2006-04-03 17:08:42|trunk +249|112643|nemet|2006-04-03 18:12:15|trunk +250|112646|geoffk|2006-04-03 20:56:59|trunk +251|112647|doko|2006-04-03 22:20:21|trunk +252|112653|geoffk|2006-04-04 00:28:33|trunk +253|112654|tromey|2006-04-04 00:30:05|trunk +254|112656|jvdelisle|2006-04-04 02:50:23|trunk +255|112657|jvdelisle|2006-04-04 03:04:58|trunk +256|112658|gerald|2006-04-04 05:41:24|trunk +257|112664|tromey|2006-04-04 14:06:20|trunk +258|112665|dberlin|2006-04-04 14:06:53|trunk +259|112666|tromey|2006-04-04 15:04:35|trunk +260|112670|sayle|2006-04-04 15:27:08|trunk +261|112671|tromey|2006-04-04 15:44:59|trunk +262|112672|carlos|2006-04-04 16:19:59|trunk +263|112673|spop|2006-04-04 17:08:16|trunk +264|112676|dje|2006-04-04 17:58:55|trunk +265|112677|tromey|2006-04-04 20:05:01|trunk +266|112683|echristo|2006-04-04 23:07:26|trunk +267|112685|tromey|2006-04-04 23:25:09|trunk +268|112691|bje|2006-04-05 00:50:58|trunk +269|112692|geoffk|2006-04-05 00:53:55|trunk +270|112693|echristo|2006-04-05 02:46:02|trunk +271|112694|echristo|2006-04-05 02:53:30|trunk +272|112695|hjl|2006-04-05 04:47:51|trunk +273|112696|gerald|2006-04-05 05:21:32|trunk +274|112697|rguenth|2006-04-05 08:16:38|trunk +275|112699|aph|2006-04-05 09:53:08|trunk +276|112700|spop|2006-04-05 12:33:06|trunk +277|112701|hjl|2006-04-05 13:23:35|trunk +278|112702|ebotcazou|2006-04-05 13:41:01|trunk +279|112705|amodra|2006-04-05 14:45:12|trunk +280|112708|rmathew|2006-04-05 15:18:19|trunk +281|112709|rguenth|2006-04-05 15:41:18|trunk +282|112718|bernds|2006-04-05 19:37:42|trunk +283|112719|andreast|2006-04-05 21:26:34|trunk +284|112720|bernds|2006-04-05 22:03:30|trunk +285|112722|jason|2006-04-05 22:32:25|trunk +286|112724|tromey|2006-04-05 22:47:51|trunk +287|112730|dj|2006-04-06 01:54:29|trunk +288|112731|sayle|2006-04-06 02:08:27|trunk +289|112734|sayle|2006-04-06 16:47:40|trunk +290|112736|andreast|2006-04-06 19:22:45|trunk +291|112737|mrs|2006-04-06 19:36:30|trunk +292|112738|hubicka|2006-04-06 20:33:21|trunk +293|112740|mmitchel|2006-04-06 22:16:11|trunk +294|112741|carlos|2006-04-06 23:54:50|trunk +295|112749|rguenth|2006-04-07 08:04:26|trunk +296|112751|hubicka|2006-04-07 11:48:42|trunk +297|112752|dje|2006-04-07 14:24:44|trunk +298|112753|hubicka|2006-04-07 15:24:39|trunk +299|112754|aph|2006-04-07 15:42:07|trunk +300|112755|spop|2006-04-07 15:44:59|trunk +301|112765|dj|2006-04-07 21:50:47|trunk +302|112766|andreast|2006-04-07 22:33:30|trunk +303|112768|wilson|2006-04-07 23:04:15|trunk +304|112769|jvdelisle|2006-04-07 23:05:12|trunk +305|112776|rmh|2006-04-08 09:03:32|trunk +306|112779|kazu|2006-04-08 14:15:44|trunk +307|112780|kazu|2006-04-08 14:31:12|trunk +308|112782|kazu|2006-04-08 17:01:17|trunk +309|112784|kazu|2006-04-08 17:07:16|trunk +310|112786|rmh|2006-04-08 20:11:21|trunk +311|112787|mrs|2006-04-08 20:38:25|trunk +312|112788|mrs|2006-04-08 21:06:26|trunk +313|112789|dberlin|2006-04-08 21:50:04|trunk +314|112790|mrs|2006-04-08 23:07:53|trunk +315|112791|mrs|2006-04-08 23:26:12|trunk +316|112792|mrs|2006-04-08 23:36:00|trunk +317|112793|mrs|2006-04-09 00:07:28|trunk +318|112794|mrs|2006-04-09 00:11:53|trunk +319|112800|mrs|2006-04-09 00:18:01|trunk +320|112803|rsandifo|2006-04-09 10:06:20|trunk +321|112805|danglin|2006-04-09 17:19:42|trunk +322|112807|danglin|2006-04-09 18:32:16|trunk +323|112815|dberlin|2006-04-10 03:36:09|trunk +324|112817|sayle|2006-04-10 05:13:59|trunk +325|112818|paolo|2006-04-10 10:05:51|trunk +326|112819|jakub|2006-04-10 12:02:55|trunk +327|112820|jakub|2006-04-10 13:18:19|trunk +328|112823|ebotcazou|2006-04-10 14:29:47|trunk +329|112824|ebotcazou|2006-04-10 14:34:02|trunk +330|112827|aph|2006-04-10 16:01:23|trunk +331|112829|geoffk|2006-04-10 18:16:07|trunk +332|112830|kazu|2006-04-10 19:26:18|trunk +333|112832|sayle|2006-04-10 21:01:19|trunk +334|112833|doko|2006-04-10 21:34:19|trunk +335|112843|amodra|2006-04-11 00:33:29|trunk +336|112845|aldyh|2006-04-11 01:36:50|trunk +337|112847|dj|2006-04-11 03:08:13|trunk +338|112849|law|2006-04-11 05:52:45|trunk +339|112850|jakub|2006-04-11 07:15:00|trunk +340|112851|jakub|2006-04-11 07:16:14|trunk +341|112857|sayle|2006-04-11 15:41:41|trunk +342|112858|bryce|2006-04-11 16:23:00|trunk +343|112859|ebotcazou|2006-04-11 16:25:46|trunk +344|112861|rsandifo|2006-04-11 17:43:07|trunk +345|112863|sayle|2006-04-11 18:26:12|trunk +346|112864|danglin|2006-04-11 18:29:16|trunk +347|112867|bryce|2006-04-11 21:56:27|trunk +348|112869|mmitchel|2006-04-11 22:59:57|trunk +349|112871|sayle|2006-04-11 23:53:39|trunk +350|112880|amodra|2006-04-12 01:26:23|trunk +351|112882|jimb|2006-04-12 06:24:40|trunk +352|112883|jimb|2006-04-12 06:29:21|trunk +353|112884|rguenth|2006-04-12 07:51:18|trunk +354|112887|sayle|2006-04-12 13:46:19|trunk +355|112889|sayle|2006-04-12 16:26:58|trunk +356|112891|mmitchel|2006-04-12 16:58:24|trunk +357|112893|kazu|2006-04-12 17:19:23|trunk +358|112894|kazu|2006-04-12 17:20:22|trunk +359|112897|gerald|2006-04-12 19:57:02|trunk +360|112898|amylaar|2006-04-12 20:09:41|trunk +361|112900|wilson|2006-04-12 22:10:49|trunk +362|112903|kazu|2006-04-12 22:55:28|trunk +363|112904|andreast|2006-04-12 22:56:19|trunk +364|112912|amodra|2006-04-13 05:10:00|trunk +365|112914|jvdelisle|2006-04-13 06:24:58|trunk +366|112915|jvdelisle|2006-04-13 06:30:04|trunk +367|112923|uweigand|2006-04-13 20:26:59|trunk +368|112925|tromey|2006-04-13 21:04:04|trunk +369|112927|sayle|2006-04-13 21:10:31|trunk +370|112930|sayle|2006-04-13 21:31:00|trunk +371|112934|dj|2006-04-13 23:14:25|trunk +372|112935|rth|2006-04-13 23:44:25|trunk +373|112936|ebotcazou|2006-04-14 00:07:48|trunk +374|112942|kazu|2006-04-14 02:28:46|trunk +375|112948|amodra|2006-04-14 03:20:21|trunk +376|112949|uros|2006-04-14 05:01:18|trunk +377|112950|ebotcazou|2006-04-14 07:01:38|trunk +378|112955|kazu|2006-04-14 14:31:32|trunk +379|112957|paolo|2006-04-14 17:35:06|trunk +380|112959|jakub|2006-04-14 22:24:59|trunk +381|112966|sayle|2006-04-15 03:24:23|trunk +382|112967|jvdelisle|2006-04-15 04:51:39|trunk +383|112968|sayle|2006-04-15 05:50:42|trunk +384|112969|kazu|2006-04-15 12:40:14|trunk +385|112970|danglin|2006-04-15 15:53:33|trunk +386|112971|kazu|2006-04-15 21:45:06|trunk +387|112972|kazu|2006-04-15 21:48:54|trunk +388|112979|kazu|2006-04-16 00:55:20|trunk +389|112980|sayle|2006-04-16 02:38:44|trunk +390|112981|pault|2006-04-16 03:45:24|trunk +391|112982|sayle|2006-04-16 04:01:25|trunk +392|112983|paolo|2006-04-16 09:06:46|trunk +393|112986|mmitchel|2006-04-16 18:12:41|trunk +394|112988|tkoenig|2006-04-16 20:29:24|trunk +395|112990|sayle|2006-04-16 21:46:59|trunk +396|112991|sayle|2006-04-16 23:33:51|trunk +397|112998|nemet|2006-04-17 01:59:41|trunk +398|112999|jvdelisle|2006-04-17 02:33:51|trunk +399|113000|jvdelisle|2006-04-17 02:37:15|trunk +400|113001|sayle|2006-04-17 02:38:50|trunk +401|113004|kazu|2006-04-17 12:40:57|trunk +402|113005|kazu|2006-04-17 12:42:37|trunk +403|113006|kazu|2006-04-17 12:45:25|trunk +404|113007|rguenth|2006-04-17 13:53:19|trunk +405|113008|reichelt|2006-04-17 16:32:03|trunk +406|113009|sayle|2006-04-17 16:49:54|trunk +407|113010|janis|2006-04-17 19:35:56|trunk +408|113011|andreast|2006-04-17 21:18:23|trunk +409|113012|geoffk|2006-04-17 21:27:57|trunk +410|113013|tromey|2006-04-17 21:41:47|trunk +411|113025|bonzini|2006-04-18 08:08:47|trunk +412|113026|bonzini|2006-04-18 08:23:39|trunk +413|113027|nickc|2006-04-18 10:11:30|trunk +414|113028|nickc|2006-04-18 10:15:41|trunk +415|113029|kazu|2006-04-18 12:32:11|trunk +416|113031|paolo|2006-04-18 12:34:41|trunk +417|113039|krebbel|2006-04-18 13:56:51|trunk +418|113042|nickc|2006-04-18 14:48:36|trunk +419|113047|sje|2006-04-18 16:05:42|trunk +420|113048|dpatel|2006-04-18 16:06:32|trunk +421|113053|aldot|2006-04-18 17:58:41|trunk +422|113054|dj|2006-04-18 18:58:17|trunk +423|113056|jsm28|2006-04-18 20:50:45|trunk +424|113057|geoffk|2006-04-18 21:52:49|trunk +425|113060|amodra|2006-04-18 23:45:47|trunk +426|113066|dj|2006-04-19 00:56:33|trunk +427|113071|krebbel|2006-04-19 10:42:19|trunk +428|113072|krebbel|2006-04-19 11:45:41|trunk +429|113073|krebbel|2006-04-19 11:56:18|trunk +430|113075|rakdver|2006-04-19 12:48:35|trunk +431|113081|mmitchel|2006-04-19 16:58:23|trunk +432|113082|tromey|2006-04-19 17:01:53|trunk +433|113084|reichelt|2006-04-19 17:15:54|trunk +434|113087|reichelt|2006-04-19 17:36:59|trunk +435|113090|reichelt|2006-04-19 18:07:19|trunk +436|113094|reichelt|2006-04-19 21:42:09|trunk +437|113095|reichelt|2006-04-19 21:47:03|trunk +438|113096|reichelt|2006-04-19 22:03:24|trunk +439|113100|paolo|2006-04-19 22:58:23|trunk +440|113101|tromey|2006-04-19 23:05:14|trunk +441|113107|carlos|2006-04-20 00:21:51|trunk +442|113109|kkojima|2006-04-20 01:54:20|trunk +443|113111|amodra|2006-04-20 07:04:00|trunk +444|113112|jakub|2006-04-20 09:04:26|trunk +445|113118|tromey|2006-04-20 15:46:40|trunk +446|113120|law|2006-04-20 16:13:12|trunk +447|113121|reichelt|2006-04-20 16:19:21|trunk +448|113122|hjl|2006-04-20 16:23:57|trunk +449|113123|bryce|2006-04-20 23:47:56|trunk +450|113130|amodra|2006-04-21 01:52:13|trunk +451|113133|pault|2006-04-21 05:10:22|trunk +452|113135|nickc|2006-04-21 08:10:42|trunk +453|113136|dje|2006-04-21 14:10:22|trunk +454|113138|pbrook|2006-04-21 17:05:51|trunk +455|113141|sje|2006-04-21 17:39:15|trunk +456|113146|jsm28|2006-04-21 19:45:50|trunk +457|113148|jsm28|2006-04-21 19:49:54|trunk +458|113152|reichelt|2006-04-21 22:58:28|trunk +459|113153|reichelt|2006-04-21 23:02:26|trunk +460|113167|echristo|2006-04-22 01:23:09|trunk +461|113168|echristo|2006-04-22 01:33:34|trunk +462|113169|jakub|2006-04-22 07:08:58|trunk +463|113171|geoffk|2006-04-22 08:50:36|trunk +464|113173|jsm28|2006-04-22 15:31:09|trunk +465|113175|kazu|2006-04-22 16:12:34|trunk +466|113178|kazu|2006-04-22 16:19:56|trunk +467|113179|fche|2006-04-22 16:22:54|trunk +468|113180|kazu|2006-04-22 16:45:28|trunk +469|113181|andreast|2006-04-22 21:17:35|trunk +470|113182|andreast|2006-04-22 22:17:26|trunk +471|113190|jvdelisle|2006-04-23 02:04:58|trunk +472|113192|ebotcazou|2006-04-23 09:06:32|trunk +473|113193|paolo|2006-04-23 11:44:40|trunk +474|113194|pault|2006-04-23 11:56:37|trunk +475|113195|paolo|2006-04-23 14:54:26|trunk +476|113196|sayle|2006-04-23 17:25:30|trunk +477|113197|sayle|2006-04-23 17:39:54|trunk +478|113198|sayle|2006-04-23 17:44:46|trunk +479|113199|mmitchel|2006-04-23 18:04:33|trunk +480|113200|ebotcazou|2006-04-23 18:14:13|trunk +481|113201|doko|2006-04-23 18:15:34|trunk +482|113206|dje|2006-04-23 23:58:36|trunk +483|113212|hjl|2006-04-24 03:04:29|trunk +484|113213|mmitchel|2006-04-24 03:50:31|trunk +485|113216|rguenth|2006-04-24 07:58:53|trunk +486|113217|rguenth|2006-04-24 08:01:33|trunk +487|113218|rguenth|2006-04-24 08:17:42|trunk +488|113219|rguenth|2006-04-24 08:21:41|trunk +489|113220|reichelt|2006-04-24 08:38:05|trunk +490|113221|rguenth|2006-04-24 09:06:51|trunk +491|113223|aph|2006-04-24 13:40:21|trunk +492|113224|aph|2006-04-24 15:33:16|trunk +493|113226|mmitchel|2006-04-24 16:33:11|trunk +494|113227|bernds|2006-04-24 19:35:38|trunk +495|113228|jules|2006-04-24 21:24:27|trunk +496|113229|tromey|2006-04-24 21:28:36|trunk +497|113240|mmitchel|2006-04-25 03:33:38|trunk +498|113241|geoffk|2006-04-25 05:56:36|trunk +499|113242|jakub|2006-04-25 09:42:41|trunk +500|113245|bernds|2006-04-25 11:49:27|trunk +501|113246|aph|2006-04-25 11:54:15|trunk +502|113247|bernds|2006-04-25 11:58:22|trunk +503|113248|krebbel|2006-04-25 12:11:25|trunk +504|113250|dje|2006-04-25 15:00:53|trunk +505|113251|tromey|2006-04-25 15:20:33|trunk +506|113252|rguenth|2006-04-25 15:38:32|trunk +507|113254|geoffk|2006-04-25 19:12:50|trunk +508|113256|rth|2006-04-25 20:58:25|trunk +509|113257|rsandifo|2006-04-25 21:34:48|trunk +510|113259|dj|2006-04-25 22:08:53|trunk +511|113265|sayle|2006-04-26 00:51:14|trunk +512|113267|geoffk|2006-04-26 06:57:01|trunk +513|113268|jakub|2006-04-26 08:20:57|trunk +514|113269|jakub|2006-04-26 08:23:12|trunk +515|113270|jakub|2006-04-26 08:24:28|trunk +516|113271|jakub|2006-04-26 08:26:06|trunk +517|113274|aldyh|2006-04-26 10:29:02|trunk +518|113275|dje|2006-04-26 14:33:49|trunk +519|113276|zadeck|2006-04-26 16:17:01|trunk +520|113278|dje|2006-04-26 17:57:03|trunk +521|113281|bkoz|2006-04-26 19:13:18|trunk +522|113283|bkoz|2006-04-26 19:52:31|trunk +523|113296|hjl|2006-04-27 06:13:40|trunk +524|113297|mueller|2006-04-27 11:13:45|trunk +525|113298|rguenth|2006-04-27 13:52:44|trunk +526|113300|rguenth|2006-04-27 14:25:49|trunk +527|113318|sayle|2006-04-27 17:26:03|trunk +528|113319|stuart|2006-04-27 18:57:11|trunk +529|113320|mmitchel|2006-04-27 19:02:54|trunk +530|113321|amacleod|2006-04-27 20:22:17|trunk +531|113323|andreast|2006-04-27 22:20:03|trunk +532|113325|bkoz|2006-04-27 22:49:28|trunk +533|113327|echristo|2006-04-27 22:53:23|trunk +534|113339|mmitchel|2006-04-28 02:40:58|trunk +535|113340|amodra|2006-04-28 03:36:15|trunk +536|113341|amodra|2006-04-28 03:41:34|trunk +537|113345|jsm28|2006-04-28 12:15:36|trunk +538|113347|doko|2006-04-28 14:05:42|trunk +539|113348|rguenth|2006-04-28 14:36:14|trunk +540|113350|jbeulich|2006-04-28 14:44:20|trunk +541|113355|sayle|2006-04-28 19:59:57|trunk +542|113356|amacleod|2006-04-28 20:39:18|trunk +543|113358|echristo|2006-04-28 20:52:01|trunk +544|113363|jvdelisle|2006-04-28 23:55:30|trunk +545|113364|jvdelisle|2006-04-29 00:02:10|trunk +546|113370|bryce|2006-04-29 01:35:50|trunk +547|113375|hjl|2006-04-29 14:25:42|trunk +548|113376|fxcoudert|2006-04-29 16:31:26|trunk +549|113377|paolo|2006-04-29 18:16:47|trunk +550|113378|reichelt|2006-04-29 20:48:45|trunk +551|113382|reichelt|2006-04-29 21:39:54|trunk +552|113388|jvdelisle|2006-04-30 03:19:37|trunk +553|113389|reichelt|2006-04-30 10:34:05|trunk +554|113392|zadeck|2006-04-30 13:32:05|trunk +555|113395|dje|2006-04-30 19:23:13|trunk +556|113399|mmitchel|2006-04-30 23:21:38|trunk diff --git a/gcc-4.8.3/contrib/reghunt/examples/29906b.log b/gcc-4.8.3/contrib/reghunt/examples/29906b.log new file mode 100644 index 000000000..2285d9c31 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/29906b.log @@ -0,0 +1,81 @@ +Mon Feb 16 19:21:02 PST 2009 NOTE: skipping high patch, already verified +Mon Feb 16 19:21:02 PST 2009 LATER_THAN = 1 +Mon Feb 16 19:21:02 PST 2009 EARLIER_THAN = 556 +Mon Feb 16 19:21:02 PST 2009 svn checkout begun for id 1, rev 112078 +Mon Feb 16 19:25:04 PST 2009 svn checkout done +Mon Feb 16 19:25:04 PST 2009 building GCC (c,c++) for id 1 +Mon Feb 16 19:37:17 PST 2009 compilation failed for bug 29906b, id 1 +Mon Feb 16 19:37:17 PST 2009 result for low patch 1 is as expected +Mon Feb 16 19:37:17 PST 2009 svn update begun for id 278, rev 112702 +Mon Feb 16 19:37:37 PST 2009 svn update done +Mon Feb 16 19:37:38 PST 2009 building GCC (c,c++) for id 278 +Mon Feb 16 19:49:42 PST 2009 test compiled successfully for bug 29906b, id 278 +Mon Feb 16 19:49:42 PST 2009 search patches earlier than 278 +Mon Feb 16 19:49:42 PST 2009 svn update begun for id 139, rev 112398 +Mon Feb 16 19:49:57 PST 2009 svn update done +Mon Feb 16 19:49:58 PST 2009 building GCC (c,c++) for id 139 +Mon Feb 16 20:01:55 PST 2009 test compiled successfully for bug 29906b, id 139 +Mon Feb 16 20:01:55 PST 2009 search patches earlier than 139 +Mon Feb 16 20:01:55 PST 2009 svn update begun for id 70, rev 112248 +Mon Feb 16 20:02:06 PST 2009 svn update done +Mon Feb 16 20:02:07 PST 2009 building GCC (c,c++) for id 70 +Mon Feb 16 20:14:01 PST 2009 compilation failed for bug 29906b, id 70 +Mon Feb 16 20:14:01 PST 2009 search patches later than 70 +Mon Feb 16 20:14:01 PST 2009 svn update begun for id 104, rev 112319 +Mon Feb 16 20:14:12 PST 2009 svn update done +Mon Feb 16 20:14:12 PST 2009 building GCC (c,c++) for id 104 +Mon Feb 16 20:26:15 PST 2009 compilation failed for bug 29906b, id 104 +Mon Feb 16 20:26:15 PST 2009 search patches later than 104 +Mon Feb 16 20:26:15 PST 2009 svn update begun for id 121, rev 112360 +Mon Feb 16 20:26:25 PST 2009 svn update done +Mon Feb 16 20:26:26 PST 2009 building GCC (c,c++) for id 121 +Mon Feb 16 20:38:27 PST 2009 test compiled successfully for bug 29906b, id 121 +Mon Feb 16 20:38:27 PST 2009 search patches earlier than 121 +Mon Feb 16 20:38:27 PST 2009 svn update begun for id 112, rev 112346 +Mon Feb 16 20:38:38 PST 2009 svn update done +Mon Feb 16 20:38:39 PST 2009 building GCC (c,c++) for id 112 +Mon Feb 16 20:50:36 PST 2009 compilation failed for bug 29906b, id 112 +Mon Feb 16 20:50:36 PST 2009 search patches later than 112 +Mon Feb 16 20:50:37 PST 2009 svn update begun for id 116, rev 112351 +Mon Feb 16 20:50:42 PST 2009 svn update done +Mon Feb 16 20:50:42 PST 2009 building GCC (c,c++) for id 116 +Mon Feb 16 21:02:45 PST 2009 compilation failed for bug 29906b, id 116 +Mon Feb 16 21:02:45 PST 2009 search patches later than 116 +Mon Feb 16 21:02:45 PST 2009 svn update begun for id 118, rev 112355 +Mon Feb 16 21:02:50 PST 2009 svn update done +Mon Feb 16 21:02:51 PST 2009 building GCC (c,c++) for id 118 +Mon Feb 16 21:14:53 PST 2009 compilation failed for bug 29906b, id 118 +Mon Feb 16 21:14:53 PST 2009 search patches later than 118 +Mon Feb 16 21:14:53 PST 2009 svn update begun for id 119, rev 112357 +Mon Feb 16 21:15:01 PST 2009 svn update done +Mon Feb 16 21:15:01 PST 2009 building GCC (c,c++) for id 119 +Mon Feb 16 21:26:59 PST 2009 compilation failed for bug 29906b, id 119 +Mon Feb 16 21:26:59 PST 2009 search patches later than 119 +Mon Feb 16 21:26:59 PST 2009 svn update begun for id 120, rev 112359 +Mon Feb 16 21:27:04 PST 2009 svn update done +Mon Feb 16 21:27:04 PST 2009 building GCC (c,c++) for id 120 +Mon Feb 16 21:39:01 PST 2009 compilation failed for bug 29906b, id 120 +Mon Feb 16 21:39:01 PST 2009 search patches later than 120 +Test result changes with id 121 +------------------------------------------------------------------------ +r112360 | carlos | 2006-03-24 21:17:41 +0000 (Fri, 24 Mar 2006) | 15 lines + +gcc/ + +2006-03-24 Carlos O'Donell <carlos@codesourcery.com> + + * doc/invoke.texi: Document -femit-class-debug-always + * common.opt: Add -femit-class-debug-always. + +gcc/cp/ + +2006-03-24 Carlos O'Donell <carlos@codesourcery.com> + + * search.c (maybe_suppress_debug_info): If + flag_emit_class_debug_always then don't suppress. + + +------------------------------------------------------------------------ + + http://gcc.gnu.org/viewcvs?view=rev&rev=112360 + r112360 | carlos | 2006-03-24 21:17:41 +0000 (Fri, 24 Mar 2006) diff --git a/gcc-4.8.3/contrib/reghunt/examples/30643.c b/gcc-4.8.3/contrib/reghunt/examples/30643.c new file mode 100644 index 000000000..be607491e --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/30643.c @@ -0,0 +1,14 @@ +extern void abort (void); +struct s { int a; int b;}; +void bar (struct s *ps, int *p, int *__restrict__ rp, int *__restrict__ rq) +{ + ps->a = 0; + ps->b = 1; + if (ps->a != 0) abort (); + p[0] = 0; + p[1] = 1; + if (p[0] != 0) abort (); + rp[0] = 0; + rq[0] = 1; + if (rp[0] != 0) abort(); +} diff --git a/gcc-4.8.3/contrib/reghunt/examples/30643.config b/gcc-4.8.3/contrib/reghunt/examples/30643.config new file mode 100644 index 000000000..a7f830d6c --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/30643.config @@ -0,0 +1,19 @@ +BUGID=30643 +FIND=break +LANG=c +BUILD_KIND=simple +BUG_KIND=ice-on-valid-code +OPTS="-O2" +REG_TARGET=i686-linux + +. ./common.config + +REG_TEST=${BUGID}.test + +#LOW_PATCH=11 +#HIGH_PATCH=21 + +#msg 0 'NOTE: skipping low patch, already verified' +#SKIP_LOW=1 +msg 0 'NOTE: skipping high patch, already verified' +SKIP_HIGH=1 diff --git a/gcc-4.8.3/contrib/reghunt/examples/30643.list b/gcc-4.8.3/contrib/reghunt/examples/30643.list new file mode 100644 index 000000000..73f8ebff8 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/30643.list @@ -0,0 +1,83 @@ +1|115570|pmj|2006-07-18 22:22:07|trunk +2|115576|mmitchel|2006-07-19 00:22:43|trunk +3|115578|sayle|2006-07-19 05:13:56|trunk +4|115579|mmitchel|2006-07-19 05:14:25|trunk +5|115580|rsandifo|2006-07-19 05:29:36|trunk +6|115582|nathan|2006-07-19 06:45:34|trunk +7|115591|jakub|2006-07-19 15:47:36|trunk +8|115593|jb|2006-07-19 16:51:49|trunk +9|115594|jb|2006-07-19 16:52:45|trunk +10|115597|mmitchel|2006-07-19 17:32:38|trunk +11|115598|daney|2006-07-19 19:52:44|trunk +12|115599|reichelt|2006-07-19 19:56:29|trunk +13|115600|mmitchel|2006-07-19 22:49:20|trunk +14|115608|echristo|2006-07-20 07:35:32|trunk +15|115609|echristo|2006-07-20 07:40:12|trunk +16|115610|dannysmith|2006-07-20 07:59:09|trunk +17|115614|pbrook|2006-07-20 13:57:31|trunk +18|115619|pbrook|2006-07-20 14:20:26|trunk +19|115622|jason|2006-07-20 16:02:57|trunk +20|115624|daney|2006-07-20 17:30:42|trunk +21|115625|daney|2006-07-20 17:42:11|trunk +22|115628|kseitz|2006-07-20 19:29:53|trunk +23|115629|kseitz|2006-07-20 19:30:30|trunk +24|115631|kseitz|2006-07-20 22:20:09|trunk +25|115632|bkoz|2006-07-20 23:37:27|trunk +26|115638|sayle|2006-07-21 05:31:33|trunk +27|115640|reichelt|2006-07-21 09:41:16|trunk +28|115643|reichelt|2006-07-21 09:59:57|trunk +29|115646|kseitz|2006-07-21 18:50:48|trunk +30|115647|mark|2006-07-21 19:13:22|trunk +31|115648|mrs|2006-07-21 20:19:08|trunk +32|115649|mrs|2006-07-21 20:39:19|trunk +33|115650|daney|2006-07-21 20:49:06|trunk +34|115651|jason|2006-07-21 21:00:20|trunk +35|115652|jason|2006-07-21 21:06:19|trunk +36|115653|sje|2006-07-21 21:07:15|trunk +37|115654|sje|2006-07-21 21:11:46|trunk +38|115655|kseitz|2006-07-21 23:45:03|trunk +39|115656|bkoz|2006-07-21 23:54:41|trunk +40|115669|membar|2006-07-22 01:42:25|trunk +41|115670|jvdelisle|2006-07-22 03:14:27|trunk +42|115671|jvdelisle|2006-07-22 03:18:33|trunk +43|115672|jvdelisle|2006-07-22 03:21:10|trunk +44|115677|kargl|2006-07-22 17:55:35|trunk +45|115678|hubicka|2006-07-22 23:41:18|trunk +46|115684|drow|2006-07-23 03:50:24|trunk +47|115685|steven|2006-07-23 17:56:34|trunk +48|115686|sayle|2006-07-23 20:14:44|trunk +49|115687|mmitchel|2006-07-23 20:28:26|trunk +50|115691|sayle|2006-07-23 21:13:07|trunk +51|115692|membar|2006-07-23 23:59:24|trunk +52|115693|hubicka|2006-07-24 00:16:16|trunk +53|115698|jvdelisle|2006-07-24 00:17:52|trunk +54|115700|jvdelisle|2006-07-24 00:19:45|trunk +55|115701|membar|2006-07-24 00:22:25|trunk +56|115702|jvdelisle|2006-07-24 00:26:08|trunk +57|115703|drow|2006-07-24 02:58:08|trunk +58|115704|drow|2006-07-24 02:59:36|trunk +59|115705|uros|2006-07-24 05:43:14|trunk +60|115712|hubicka|2006-07-24 11:23:21|trunk +61|115713|hubicka|2006-07-24 11:27:53|trunk +62|115714|rguenth|2006-07-24 11:42:52|trunk +63|115715|paolo|2006-07-24 12:30:28|trunk +64|115718|kargl|2006-07-24 16:54:01|trunk +65|115721|eedelman|2006-07-24 20:15:59|trunk +66|115729|reichelt|2006-07-25 00:57:10|trunk +67|115732|kargl|2006-07-25 05:08:33|trunk +68|115733|bonzini|2006-07-25 08:30:38|trunk +69|115734|bonzini|2006-07-25 08:41:02|trunk +70|115735|drow|2006-07-25 12:31:33|trunk +71|115738|nickc|2006-07-25 15:33:50|trunk +72|115739|andreast|2006-07-25 20:01:22|trunk +73|115740|rakdver|2006-07-25 20:38:37|trunk +74|115742|sayle|2006-07-25 23:21:56|trunk +75|115749|jvdelisle|2006-07-26 01:40:29|trunk +76|115750|jvdelisle|2006-07-26 01:47:13|trunk +77|115751|jvdelisle|2006-07-26 01:48:41|trunk +78|115754|fxcoudert|2006-07-26 11:58:48|trunk +79|115760|rakdver|2006-07-26 16:47:28|trunk +80|115761|drow|2006-07-26 17:31:54|trunk +81|115762|drow|2006-07-26 17:38:37|trunk +82|115763|hubicka|2006-07-26 20:17:32|trunk +83|115765|hubicka|2006-07-26 22:51:56|trunk diff --git a/gcc-4.8.3/contrib/reghunt/examples/30643.log b/gcc-4.8.3/contrib/reghunt/examples/30643.log new file mode 100644 index 000000000..574a001a9 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/30643.log @@ -0,0 +1,64 @@ +Mon Feb 16 21:39:11 PST 2009 NOTE: skipping high patch, already verified +Mon Feb 16 21:39:11 PST 2009 LATER_THAN = 1 +Mon Feb 16 21:39:11 PST 2009 EARLIER_THAN = 83 +Mon Feb 16 21:39:11 PST 2009 svn checkout begun for id 1, rev 115570 +Mon Feb 16 21:43:34 PST 2009 svn checkout done +Mon Feb 16 21:43:34 PST 2009 building cc1 for id 1 +Mon Feb 16 21:47:05 PST 2009 build completed +Mon Feb 16 21:47:05 PST 2009 no call to abort for bug 30643, id 1 +Mon Feb 16 21:47:05 PST 2009 result for low patch 1 is as expected +Mon Feb 16 21:47:05 PST 2009 svn update begun for id 42, rev 115671 +Mon Feb 16 21:47:11 PST 2009 svn update done +Mon Feb 16 21:47:11 PST 2009 building cc1 for id 42 +Mon Feb 16 21:50:37 PST 2009 build completed +Mon Feb 16 21:50:37 PST 2009 abort call exists for bug 30643, id 42 +Mon Feb 16 21:50:37 PST 2009 search patches earlier than 42 +Mon Feb 16 21:50:37 PST 2009 svn update begun for id 21, rev 115625 +Mon Feb 16 21:50:44 PST 2009 svn update done +Mon Feb 16 21:50:44 PST 2009 building cc1 for id 21 +Mon Feb 16 21:54:09 PST 2009 build completed +Mon Feb 16 21:54:09 PST 2009 abort call exists for bug 30643, id 21 +Mon Feb 16 21:54:09 PST 2009 search patches earlier than 21 +Mon Feb 16 21:54:10 PST 2009 svn update begun for id 11, rev 115598 +Mon Feb 16 21:54:15 PST 2009 svn update done +Mon Feb 16 21:54:15 PST 2009 building cc1 for id 11 +Mon Feb 16 21:57:39 PST 2009 build completed +Mon Feb 16 21:57:39 PST 2009 no call to abort for bug 30643, id 11 +Mon Feb 16 21:57:39 PST 2009 search patches later than 11 +Mon Feb 16 21:57:39 PST 2009 svn update begun for id 16, rev 115610 +Mon Feb 16 21:57:43 PST 2009 svn update done +Mon Feb 16 21:57:43 PST 2009 building cc1 for id 16 +Mon Feb 16 22:01:08 PST 2009 build completed +Mon Feb 16 22:01:09 PST 2009 no call to abort for bug 30643, id 16 +Mon Feb 16 22:01:09 PST 2009 search patches later than 16 +Mon Feb 16 22:01:09 PST 2009 svn update begun for id 18, rev 115619 +Mon Feb 16 22:01:13 PST 2009 svn update done +Mon Feb 16 22:01:13 PST 2009 building cc1 for id 18 +Mon Feb 16 22:04:38 PST 2009 build completed +Mon Feb 16 22:04:38 PST 2009 abort call exists for bug 30643, id 18 +Mon Feb 16 22:04:38 PST 2009 search patches earlier than 18 +Mon Feb 16 22:04:38 PST 2009 svn update begun for id 17, rev 115614 +Mon Feb 16 22:04:42 PST 2009 svn update done +Mon Feb 16 22:04:42 PST 2009 building cc1 for id 17 +Mon Feb 16 22:08:07 PST 2009 build completed +Mon Feb 16 22:08:07 PST 2009 abort call exists for bug 30643, id 17 +Mon Feb 16 22:08:07 PST 2009 search patches earlier than 17 +Test result changes with id 17 +------------------------------------------------------------------------ +r115614 | pbrook | 2006-07-20 13:57:31 +0000 (Thu, 20 Jul 2006) | 11 lines + +2006-07-20 Paul Brook <paul@codesourcery.com> + + PR 27363 + gcc/ + * cse.c (cse_insn): Add destination addresses to hash table. Check if + they are invalidated by this instruction. + + gcc/testsuite/ + * gcc.dg/pr27363.c: New test. + + +------------------------------------------------------------------------ + + http://gcc.gnu.org/viewcvs?view=rev&rev=115614 + r115614 | pbrook | 2006-07-20 13:57:31 +0000 (Thu, 20 Jul 2006) diff --git a/gcc-4.8.3/contrib/reghunt/examples/30643.test b/gcc-4.8.3/contrib/reghunt/examples/30643.test new file mode 100755 index 000000000..ba9b0e0ff --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/30643.test @@ -0,0 +1,26 @@ +#! /bin/sh + +ID=$1 + +LOGID=`printf "%04d" ${ID}` +LOG=${BUGID}.${LOGID}.out +MSGID="bug ${BUGID}, id ${ID}" +ASM=${BUGID}.${LOGID}.s + +$REG_TEST_COMPILER $REG_OPTS $REG_TESTCASE > ${LOG} 2>&1 + +if [ $? -ne 0 ]; then + echo "`date` compilation failed unexpectedly for ${MSGID}" + exit REG_ERROR +fi + +cp ${BUGID}.s $ASM + +grep -q abort $ASM +if [ $? -eq 0 ]; then + echo "`date` abort call exists for ${MSGID}" + exit $REG_FAIL +fi + +echo "`date` no call to abort for ${MSGID}" +exit $REG_PASS diff --git a/gcc-4.8.3/contrib/reghunt/examples/README b/gcc-4.8.3/contrib/reghunt/examples/README new file mode 100644 index 000000000..ebf1bcb9b --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/README @@ -0,0 +1,53 @@ +This directory contains files from examples of regression hunts, cut +down to smaller ranges to save space and time. Try these out before +using the tools on your own tests. First, update gcc-svn-env and +common.config for your own environment. + +Each of the examples has multiple files: + + *.list files were created using gcc-svn-patchlist + + *.config files were written by hand based on earlier config files; + the commented-out pieces are left as templates in case they're needed + + *.c, *.c++ are source files for the test, usually taken directly from + the PR + + *.test files are tests specific to a bug when an existing gcc-test-* + script can't be used + + *.log files are output from various scripts + +Examples, where the identifier is the PR number: + + 28970 wrong-code + 29106 special test, 4.1 branch + 29578 bogus-warning + 29906a ice-on-valid-code, break + 29906b ice-on-valid-code, fix + 30643 special test, cross compiler + +Cut down the range even further by setting LOW_PATCH and HIGH_PATCH +within the config file to ids where the log file shows the test +passed or failed. + +To run one, do + + reg-hunt 28970.config > 28970.log 2>&1 + +Check on its progress using + + ./reg-watch 28970.log + +To run them all, do + + echo "hunt 28970" > queue + echo "hunt 29106" >> queue + echo "hunt 29578" >> queue + echo "hunt 29906a" >> queue + echo "hunt 29906b" >> queue + echo "hunt 30643" >> queue + ./testall queue + +This allows you to add more to the queue if you're setting up lots of +hunts. diff --git a/gcc-4.8.3/contrib/reghunt/examples/common.config b/gcc-4.8.3/contrib/reghunt/examples/common.config new file mode 100644 index 000000000..7e48e1dc6 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/common.config @@ -0,0 +1,133 @@ +. ../gcc-svn-env + +test "x${BUILD}" != "x" || BUILD=$REG_DEFAULT_BUILD +export REG_BLD=$BUILD +HOST=$BUILD + +test "x${REG_TARGET}" != "x" || REG_TARGET=$HOST +test "x${REG_CONFOPTS}" != "x" || REG_CONFOPTS="" +test "${BUILD}" = "${TARGET}" -a -n "${BINUTILS}" \ + || export PATH=${BINUTILS}:${PATH} + +VERBOSITY=1 +DATE_IN_MSG=1 + +export BUGID +export REG_CHANGESET_LIST=`pwd`/${BUGID}.list + +######################################################################## +# LOW_PATCH and HIGH_PATCH are for reg_search_id. +######################################################################## + +LOW_PATCH=1 +HIGH_PATCH=`wc -l $REG_CHANGESET_LIST | awk '{ print $1 }'` + +######################################################################## +# REG_NEWMID, REG_FAILLIST, REG_CHECKFAIL, and REG_REPORTFAIL are +# used by reg-hunt and auxiliary scripts to continue a hunt after a +# build failure. If REG_NEWMID is not defined then they are all +# ignored. +######################################################################## + +#export REG_NEWMID=${REG_BIN}/reg-newmid +#export REG_FAILLIST=`pwd`/gcc-fails-${BUILD_KIND} +export REG_CHECKFAIL=${REG_BIN}/gcc-svn-checkfail +export REG_RECORDFAIL=${REG_BIN}/gcc-svn-recordfail + +######################################################################## +# REG_UPDATE, REG_BUILD, and REG_TEST are used by several scripts. +# You can use these or provide your own. +######################################################################## + +export REG_UPDATE=${REG_BIN}/gcc-svn-update + +export REG_BUILD=${REG_BIN}/gcc-build-${BUILD_KIND} + # Variables defined below are specific to gcc-build-${BUILD_KIND} + REG_CONFOPTS="$REG_CONFOPTS --build=${BUILD}" + REG_CONFOPTS="$REG_CONFOPTS --host=${HOST}" + REG_CONFOPTS="$REG_CONFOPTS --target=${REG_TARGET}" + if [ -n "$GMP" ]; then + REG_CONFOPTS="$REG_CONFOPTS --with-gmp=$GMP" + REG_CONFOPTS="$REG_CONFOPTS --with-mpfr=$GMP" + fi + REG_CONFOPTS="$REG_CONFOPTS --disable-libmudflap" + REG_CONFOPTS="$REG_CONFOPTS --disable-libssa" + + if [ "${BUILD_KIND}" != "simple" -a -n "${BINUTILS}" ]; then + REG_CONFOPTS="$REG_CONFOPTS --with-as=${BINUTILS}/as" + REG_CONFOPTS="$REG_CONFOPTS --with-ld=${BINUTILS}/ld" + fi + + case $LANG in + c) + REG_LANGS="c" + SUFFIX=c + case $BUILD_KIND in + simple) REG_COMPILER=cc1;; + full) REG_COMPILER=gcc;; + bootstrap) REG_COMPILER=gcc;; + *) msg 0 "unrecognized BUILD_KIND: $BUILD_KIND"; exit 1; + esac + ;; + c++) + REG_LANGS="c,c++" + SUFFIX=cc + case $BUILD_KIND in + simple) REG_COMPILER=cc1plus;; + full) REG_COMPILER=g++;; + bootstrap) REG_COMPILER=g++;; + *) msg 0 "unrecognized BUILD_KIND: $BUILD_KIND"; exit 1; + esac + ;; + f77) + REG_LANGS="c,f77" + SUFFIX=f + case $BUILD_KIND in + simple) REG_COMPILER=f771;; + full) REG_COMPILER=g77;; + bootstrap) REG_COMPILER=g77;; + *) msg 0 "unrecognized BUILD_KIND: $BUILD_KIND"; exit 1; + esac + ;; + f95) + REG_LANGS="c,f95" + SUFFIX=f90 + case $BUILD_KIND in + simple) REG_COMPILER=f951;; + full) REG_COMPILER=gfortran;; + bootstrap) REG_COMPILER=gfortran;; + *) msg 0 "unrecognized BUILD_KIND: $BUILD_KIND"; exit 1; + esac + ;; + *) msg 0 "unrecognized LANG: $LANG"; exit 1;; + esac + export REG_TARGET + export REG_CONFOPTS + export REG_GCCSRC=${REG_SRCDIR}/gcc + export REG_LANGS + export REG_COMPILER + +export REG_TEST=${REG_BIN}/gcc-test-${BUG_KIND} + # Variables defined below are specific to gcc-${BUG_KIND} + case $BUILD_KIND in + simple) REG_TEST_COMPILER="${REG_OBJDIR}/gcc/${REG_COMPILER} -quiet";; + *) REG_TEST_COMPILER="${REG_PREFIX}/bin/${REG_COMPILER}"; + case $BUG_KIND in + wrong-code) ;; + *) REG_TEST_COMPILER="$REG_TEST_COMPILER -c";; + esac; + ;; + esac + export REG_TEST_COMPILER + export REG_OPTS="${OPTS}" + export REG_TESTCASE=${BUGID}.${SUFFIX} + + # Return values of the test scripts depend on whether we're looking + # for the patch that introduced a bug or the one that fixed it. + case $FIND in + break) REG_PASS=1; REG_FAIL=0;; + fix) REG_PASS=0; REG_FAIL=1;; + *) msg 0 "error: unrecognized FIND: $FIND"; exit 1;; + esac + REG_ERROR=2 + export REG_PASS REG_FAIL REG_ERROR diff --git a/gcc-4.8.3/contrib/reghunt/examples/gcc-svn-env b/gcc-4.8.3/contrib/reghunt/examples/gcc-svn-env new file mode 100644 index 000000000..8691eaf7d --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/gcc-svn-env @@ -0,0 +1,75 @@ +# Define environment variables used by regression-hunting scripts. + +# Change this if using a local copy of the repository. +export REG_SVN_REPO=svn://gcc.gnu.org/svn/gcc +REG_TOP=${HOME}/reghunt +export REG_BIN=${REG_TOP}/bin +export PATH=${REG_BIN}:${PATH} + +# The build scripts look for these variables if they are defined. +#export BINUTILS=/opt/gcc-nightly/binutils-2.19/bin +#export GMP=/opt/gcc-nightly/gmp-mpfr +export REG_DEFAULT_BUILD=${REG_DEFAULT_BUILD-powerpc-linux} + +export REG_SRCDIR=${REG_TOP}/src +export REG_BUILDDIR=${REG_TOP}/build +export REG_OBJDIR=${REG_BUILDDIR}/obj +export REG_PREFIX=${REG_TOP}/install +export REG_IDS=${REG_BIN}/gcc-svn-ids +export REG_REPORT=${REG_BIN}/gcc-svn-report +export REG_CLEANUP=${REG_CLEANUP-$REG_BIN/gcc-cleanup} +export REG_STOP=${REG_SRCDIR}/STOP + +# Used for parallelism in make commands; very system-dependent, this is POSIX. +export REG_MAKE_J="-j `getconf _NPROCESSORS_ONLN`" + +export BRANCHPOINT_4_3="2008-02-18" +export BRANCHPOINT_4_2="2006-10-20" +export BRANCHPOINT_4_1="2005-11-18" +export BRANCHPOINT_4_0="2005-02-25" +export BRANCHPOINT_3_4="2004-01-16" +export BRANCHPOINT_3_3="2002-12-13" +export BRANCHPOINT_3_1="2002-02-25" +export BRANCHPOINT_3_0="2001-02-12" +export BRANCHPOINT_2_95="1999-05-18" + +export RELEASE_4_3_3="2009-01-24" +export RELEASE_4_3_2="2008-08-27" +export RELEASE_4_3_1="2008-06-06" +export RELEASE_4_3_0="2008-03-05" + +export RELEASE_4_2_4="2008-05-19" +export RELEASE_4_2_3="2008-02-01" +export RELEASE_4_2_2="2007-10-07" +export RELEASE_4_2_1="2007-07-19" +export RELEASE_4_2_0="2007-05-13" + +export RELEASE_4_1_2="2007-02-13" +export RELEASE_4_1_1="2006-05-24" +export RELEASE_4_1_0="2006-02-28" + +export RELEASE_4_0_4="2007-01-31" +export RELEASE_4_0_3="2006-03-10" +export RELEASE_4_0_2="2005-09-28" +export RELEASE_4_0_1="2005-07-07" +export RELEASE_4_0_0="2005-04-20" + +export RELEASE=3_4_6="2006-03-06" +export RELEASE=3_4_5="2005-11-30" +export RELEASE_3_4_4="2005-05-18" +export RELEASE_3_4_3="2004-11-04" +export RELEASE_3_4_2="2004-09-06" +export RELEASE_3_4_1="2004-07-01" +export RELEASE_3_4_0="2004-04-18" + +export RELEASE_3_3_6="2005-05-03" +export RELEASE_3_3_5="2004-09-30" +export RELEASE_3_3_4="2004-05-31" +export RELEASE_3_3_3="2004-02-14" +export RELEASE_3_3_2="2003-10-17" +export RELEASE_3_3_1="2003-08-08" +export RELEASE_3_3_0="2003-05-13" +export RELEASE_3_3="${RELEASE_3_3_0}" + +# Merge of the new C++ parser into mainline was revision 60560 on 2002-12-28 +# Merge of the ssa-branch into mainline was revision 81764 on 2004-05-13 diff --git a/gcc-4.8.3/contrib/reghunt/examples/reg-watch b/gcc-4.8.3/contrib/reghunt/examples/reg-watch new file mode 100755 index 000000000..218b97c06 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/reg-watch @@ -0,0 +1,3 @@ +#! /bin/sh + +awk -f reg-watch.awk "$@" diff --git a/gcc-4.8.3/contrib/reghunt/examples/reg-watch.awk b/gcc-4.8.3/contrib/reghunt/examples/reg-watch.awk new file mode 100755 index 000000000..2334215ae --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/reg-watch.awk @@ -0,0 +1,38 @@ +/result for low patch/ { + sub(".*low patch ","") + sub(" is as expected","") + printf ("<-- %4s\n", $0); + next + } +/result for high patch/ { + sub(".*high patch ","") + sub(" is as expected","") + printf (" %4s -->\n", $0); + next + } +/patches later/ { + sub(".*later than ","") + printf ("<-- %4s\n", $0); + next + } +/patches earlier/ { + sub(".*earlier than ","") + printf (" %4s -->\n", $0); + next + } +/build failed for/ { + sub(".*build failed for ","") + printf (" [%4s]\n", $0); + next + } +/HIGH_PATCH/ { + printf ("* stopped early *\n") + next + } +/changes with/ { + sub(".*changes with id ","") + printf ("+----------+\n") + printf ("| %4s |\n", $0) + printf ("+----------+\n") + next + } diff --git a/gcc-4.8.3/contrib/reghunt/examples/testall b/gcc-4.8.3/contrib/reghunt/examples/testall new file mode 100755 index 000000000..61d99e0b6 --- /dev/null +++ b/gcc-4.8.3/contrib/reghunt/examples/testall @@ -0,0 +1,73 @@ +#! /bin/sh + +# Run one or more regression hunts +# +# The file specified as the single argument is a queue of regression +# hunts and/or lists of patches to test. Each entry in the file is +# "hunt" or "test" followed by a bugid for which there is a config +# file and other required files (patch list and test source file). +# Each line of the file is removed as it is processed, and new ones +# can be added while the script is still running. + +#set -ex + +if [ $# != 1 ]; then + echo "usage: $0 testfile" + exit 1 +fi + +REGFILE=$1 +TMPFILE=testall.tmp + +if [ ! -f $REGFILE ]; then + echo "$0: file $REGFILE does not exist" + exit 1 +fi + +RETURN_FOR_TEST=return +RETURN_FOR_TEST=true + +. ../gcc-svn-env + +hunt() { + id=$1 + + echo regression hunt for $id + $RETURN_FOR_TEST + $REG_CLEANUP + reg-hunt $id.config >> $id.log 2>&1 + tail -n 1 $id.log + #tail -n 1 $id.log | mutt -s "reghunt for $id finished" janis187 +} + +testit() { + id=$1 + + echo testing specific dates for $id + $RETURN_FOR_TEST + $REG_CLEANUP + reg-test $id.config >> $id.log 2>&1 + #mutt -s "reg-test for $id finished" janis187 < /dev/null +} + +rm -f $REG_STOP + +while + read WHICH ID < $REGFILE +do + if [ -f $REG_STOP ]; then + echo "$REG_STOP detected" + rm -f $REG_STOP + exit 1 + fi + + sed 1d < $REGFILE > $TMPFILE + mv $TMPFILE $REGFILE + + case $WHICH in + hunt) hunt $ID;; + test) testit $ID;; + *) echo "unknown action $WHICH, skipping $ID";; + esac + echo +done diff --git a/gcc-4.8.3/contrib/regression/ChangeLog b/gcc-4.8.3/contrib/regression/ChangeLog new file mode 100644 index 000000000..f59d72df9 --- /dev/null +++ b/gcc-4.8.3/contrib/regression/ChangeLog @@ -0,0 +1,160 @@ +2014-05-22 Release Manager + + * GCC 4.8.3 released. + +2013-10-16 Release Manager + + * GCC 4.8.2 released. + +2013-05-31 Release Manager + + * GCC 4.8.1 released. + +2013-03-22 Release Manager + + * GCC 4.8.0 released. + +2012-08-26 Hans-Peter Nilsson <hp@axis.com> + + * btest-gcc.sh (TESTLOGS): Make gfortran.sum optional. + + * btest-gcc.sh (TESTLOGS): Add libmudflap.sum, if it exists. + +2009-09-02 Geoff Keating <geoffk@apple.com> + + * btest-gcc.sh: Continue after bootstrap comparison failure. + +2008-11-27 Geoff Keating <geoffk@geoffk.org> + + * mkindex.pl: New. + +2007-12-24 Geoff Keating <geoffk@geoffk.org> + + * objs-gcc.sh: Revert previous change. + +2007-12-23 Geoff Keating <geoffk@geoffk.org> + + * objs-gcc.sh: Set up the GDB testsuite even if the gdb installed + is just called 'gdb'. + +2007-12-22 Geoff Keating <geoffk@geoffk.org> + + * btest-gcc.sh (TESTLOGS): Add gfortran, and optionally libgomp. + + * GCC_Regression_Tester.wdgt/widget.html: Mark as HTML 4.01, + which it now is, rather than XHTML, which it never was. + (<head>): Mark as UTF-8. Add title. Move CSS to top of + document, specify type. Mark script as 'defer'. + (updateContents): If loaded from HTTP, look for status in same + place as widget. + (gotContents): Use DOM methods to change text rather than innerHTML. + (<body>): Eliminate unnecessary DIV element. + * GCC_Regression_Tester.wdgt/Info.plist: Update version, copyright + notice. + +2006-09-05 Geoffrey Keating <geoffk@apple.com> + + * btest-gcc.sh: .bad_compare has moved to toplevel from gcc/. + +2006-01-18 Andrew Pinski <pinskia@physics.uc.edu> + + * btest-gcc.sh: gcc.sum has moved to gcc/testsuite/gcc/gcc.sum. + g++.sum has moved to gcc/testsuite/g++/g++.sum. + objc.sum has moved to gcc/testsuite/objc/objc.sum. + +2005-12-20 Geoffrey Keating <geoffk@apple.com> + + * btest-gcc.sh: Support -j option. + +2005-11-28 Geoffrey Keating <geoffk@geoffk.org> + + * GCC Regression Tester.wdgt: Rename to GCC_Regression_Tester.wdgt. + * GCC_Regression_Tester.wdgt/Info.plist + (CFBundleDisplayName): Update for rename. + (CFBundleName): Use shorter name. + (CFBundleVersion): Update to 1.0.1. + (CFBundleShortVersionString): Update to 1.0.1. + (LSHasLocalizedDisplayName): New. + (NSHumanReadableCopyright): New. + * GCC_Regression_Tester.wdgt/de.lproj/InfoPlist.strings: New. + * GCC_Regression_Tester.wdgt/en.lproj/InfoPlist.strings: New. + * GCC_Regression_Tester.wdgt/ja.lproj/InfoPlist.strings: New. + + * GCC_Regression_Tester.wdgt/widget.html: Use max-age=30 + to help out intermediate caches. + +2005-11-23 Geoffrey Keating <geoffk@geoffk.org> + + * GCC Regression Tester.wdgt/widget.html: New file. + * GCC Regression Tester.wdgt/Info.plist: New file. + * GCC Regression Tester.wdgt/Icon.png: New file. + * GCC Regression Tester.wdgt/Default.png: New file. + * README: Describe new files. + +2005-06-07 Hans-Peter Nilsson <hp@bitrange.com> + + * btest-gcc.sh: Add support for option + --add-passes-despite-regression. + +2005-06-06 Hans-Peter Nilsson <hp@axis.com> + + * btest-gcc.sh <Build>: Don't pass --with-newlib when target is + "*-linux*". + + * btest-gcc.sh (TESTLOGS): Make libstdc++.sum optional. + +2004-11-07 James A. Morrison <phython@gcc.gnu.org> + + * README: Update website URL. + +2004-10-27 Geoffrey Keating <geoffk@apple.com> + + * btest-gcc.sh (TESTLOGS): The libstdc++-v3 test log is called + libstd++.sum not libstdc++-v3.sum. + +2004-10-26 Geoffrey Keating <geoffk@apple.com> + + * btest-gcc.sh (TESTLOGS): Examine regressions in libstdc++, + libffi, and libjava. + +2004-05-13 Andrew Pinski <pinskia@physics.uc.edu> + + * btest-gcc.sh: Remove g77.sum from TESTLOGS. + +2003-09-18 Andreas Tobler <a.tobler@schweiz.ch> + + * btest-gcc.sh: Add make check-target-libffi. + +2003-07-31 Andreas Tobler <a.tobler@schweiz.ch> + + * btest-gcc.sh: Add make check-target-libjava. + +2002-10-22 Geoffrey Keating <geoffk@apple.com> + + * btest-gcc.sh: Add gdb.sum to TESTLOGS only when GDB testsuite is run. + +2002-10-11 Geoffrey Keating <geoffk@apple.com> + + * objs-gcc.sh: Don't install GDB testsuite if GDB was not built. + * btest-gcc.sh: Don't run GDB testsuite if it doesn't exist. + +2002-10-09 Phil Edwards <pme@gcc.gnu.org> + + * btest-gcc.sh, objs-gcc.sh: Update TARGET comments. + +2002-10-09 Geoffrey Keating <geoffk@apple.com> + + * objs-gcc.sh: On (non-linux) native hosts, use 'make bootstrap'. + +2002-03-09 Geoffrey Keating <geoffk@redhat.com> + + * btest-gcc.sh: For crosses, assume newlib and GNU binutils. + * site.exp: Correct mips-elf triplet. + +2002-01-31 Geoffrey Keating <geoffk@redhat.com> + + * btest-gcc.sh: New file. + * objs-gcc.sh: New file. + * site.exp: New file. + * ChangeLog: New file. + * README: New file. diff --git a/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Default.png b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Default.png Binary files differnew file mode 100644 index 000000000..a6dfd4655 --- /dev/null +++ b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Default.png diff --git a/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Icon.png b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Icon.png Binary files differnew file mode 100644 index 000000000..662b5169d --- /dev/null +++ b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Icon.png diff --git a/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Info.plist b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Info.plist new file mode 100644 index 000000000..a011e69a3 --- /dev/null +++ b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/Info.plist @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>AllowNetworkAccess</key> + <true/> + <key>CFBundleDisplayName</key> + <string>GCC_Regression_Tester</string> + <key>CFBundleIdentifier</key> + <string>org.geoffk.widget.regress</string> + <key>CFBundleName</key> + <string>GCC Regr. Tester</string> + <key>CFBundleShortVersionString</key> + <string>1.0.2</string> + <key>CFBundleVersion</key> + <string>1.0.2</string> + <key>CloseBoxInsetX</key> + <integer>0</integer> + <key>CloseBoxInsetY</key> + <integer>0</integer> + <key>Height</key> + <integer>192</integer> + <key>LSHasLocalizedDisplayName</key> + <true/> + <key>MainHTML</key> + <string>widget.html</string> + <key>NSHumanReadableCopyright</key> + <string>Copyright © 2005, 2007 Free Software Foundation, Inc.</string> + <key>Width</key> + <integer>261</integer> +</dict> +</plist> diff --git a/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/de.lproj/InfoPlist.strings b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/de.lproj/InfoPlist.strings Binary files differnew file mode 100644 index 000000000..7692ed523 --- /dev/null +++ b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/de.lproj/InfoPlist.strings diff --git a/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/en.lproj/InfoPlist.strings b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/en.lproj/InfoPlist.strings Binary files differnew file mode 100644 index 000000000..45628a3ef --- /dev/null +++ b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/en.lproj/InfoPlist.strings diff --git a/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/ja.lproj/InfoPlist.strings b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/ja.lproj/InfoPlist.strings Binary files differnew file mode 100644 index 000000000..f3110f3e8 --- /dev/null +++ b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/ja.lproj/InfoPlist.strings diff --git a/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/widget.html b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/widget.html new file mode 100644 index 000000000..ec24fb54a --- /dev/null +++ b/gcc-4.8.3/contrib/regression/GCC_Regression_Tester.wdgt/widget.html @@ -0,0 +1,152 @@ +<!-- Get and update the GCC regression tester's web page. + Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. --> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" + "http://www.w3.org/TR/html4/strict.dtd"> +<head> +<meta http-equiv="Content-Script-Type" content="text/javascript"> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> +<title>Regression Tester Status</title> +<style type='text/css'> +body { + margin: 0px; + padding: 0px; +} +pre { + font-family: Monaco; + font-size: 9px; + margin: 0px; + padding: 1px 2px 1px 2px; + color: black; + background-color: white; + opacity: 0.8; +} +</style> +<script type='text/javascript' defer> +// A string representing NUM, with a leading zero if it would be 1 digit long +function dig2 (num) +{ + var result = num.toString(); + if (result.length == 1) + return '0' + result; + else + return result; +} + +// Get DATE as a string in standard ISO format in UTC +function getISO (date) +{ + return (date.getUTCFullYear().toString() + '-' + + dig2 (date.getUTCMonth() + 1) + '-' + + dig2 (date.getUTCDate()) + 'T' + + dig2 (date.getUTCHours()) + ':' + + dig2 (date.getUTCMinutes()) + 'Z'); +} + +// STR is a bunch of lines of the form '<key>: <date>' where <date> is in +// standard ISO UTC format. Return a Date object corresponding to KEY, or null +// if none is found. +function fromISO (str, key) +{ + var rx = new RegExp (key + ": (\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+):(\\d+)Z"); + var match = rx.exec (str); + if (match == null || match.length != 7) + return null; + var date = new Date(0); + date.setUTCFullYear (match[1], match[2] - 1, match[3]); + date.setUTCHours (match[4], match[5], match[6], 0); + return date; +} + +// Update the data +function updateContents () { + var url = 'http://gcc.gnu.org/regtest/HEAD/status.txt'; + if (document.URL && document.URL.substring (0,5) == 'http:') { + url = document.URL.replace ('widget.html','status.txt'); + } + var xml_request = new XMLHttpRequest(); + + xml_request.onload = function(e) + { + gotContents(e, xml_request); + } + xml_request.open("GET", url); + xml_request.setRequestHeader("Cache-Control", "max-age=30"); + xml_request.send(null); +} + +function gotContents (event, request) { + if (request.status != 200) + return; + + if (! request.responseText) + return; + + var txt = request.responseText; + var today = new Date(); + var date_r = fromISO (txt, "Date"); + var completed_r = fromISO (txt, "Test-Completed"); + var now_test_r = fromISO (txt, "Now-Testing"); + var eta = ""; + + if (date_r != null && completed_r != null && now_test_r != null) + { + var eta_r = new Date (now_test_r.getTime() + + completed_r.getTime() - date_r.getTime()); + eta = "ETA: " + getISO (eta_r) + '\n'; + } + + var val = txt + "Now: " + getISO (today) + '\n' + eta; + var contEl = document.getElementById ("contents"); + contEl.removeChild(contEl.firstChild); + contEl.appendChild (document.createTextNode (val)); +} + +var mainTimer = null; + +function myOnShow () +{ + if (! mainTimer) { + mainTimer = setInterval (updateContents, 60000); + } + updateContents(); +} + +function myOnHide () +{ + if (mainTimer) { + clearInterval (mainTimer); + mainTimer = null; + } +} + +function myOnLoad () +{ + if ( window.widget ) { + widget.onshow = myOnShow; + widget.onhide = myOnHide; + } + myOnShow(); +} +</script> +</head> + +<body onLoad='myOnLoad();'> +<pre id="contents">Loading...</pre> +</body> +</html> diff --git a/gcc-4.8.3/contrib/regression/README b/gcc-4.8.3/contrib/regression/README new file mode 100644 index 000000000..9e94e5c39 --- /dev/null +++ b/gcc-4.8.3/contrib/regression/README @@ -0,0 +1,24 @@ +This directory contains scripts that are used by the regression +tester, <http://gcc.gnu.org/regtest/> + +The primary script is 'btest-gcc.sh'. This is the script that is run +to actually test the compiler. + +'objs-gcc.sh' takes a combined tree and builds (but does not test) the +tools required for 'btest-gcc.sh'. It is run periodically to update +the tools. This script is followed by running 'btest-gcc.sh' using +the newly-build tools to check that they will not cause regressions. + +'site.exp' is what $DEJAGNU points to when the regression tester runs +these scripts. + +'GCC_Regression_Tester.wdgt' is a Dashboard widget that displays the +current state of the tester using Javascript. You can use it without +needing Dashboard by pointing your web browser at +'GCC_Regression_Tester.wdgt/widget.html', if your browser supports +and permits it. + +Note that any changes made here need to be approved by the regression +tester's maintainer (see MAINTAINERS). The changes will be used on +the tester's next run, so `experimental' changes are very strongly +discouraged :-). diff --git a/gcc-4.8.3/contrib/regression/btest-gcc.sh b/gcc-4.8.3/contrib/regression/btest-gcc.sh new file mode 100755 index 000000000..d4966dc6c --- /dev/null +++ b/gcc-4.8.3/contrib/regression/btest-gcc.sh @@ -0,0 +1,241 @@ +#!/bin/sh + +# Test GCC. +# Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006, 2009, 2012 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# INPUT: +# btest <options> <target> <source> <prefix> <state> <build> + +add_passes_despite_regression=0 +dashj='' + +# <options> can be +# --add-passes-despite-regression: +# Add new "PASSes" despite there being some regressions. +# -j<n>: +# Pass '-j<n>' to make. + +case "$1" in + --add-passes-despite-regression) + add_passes_despite_regression=1; shift;; + -j*) + dashj=$1; shift;; + -*) echo "Invalid option: $1"; exit 2;; +esac + +# TARGET is the target triplet. It should be the same one as used in +# constructing PREFIX. Or it can be the keyword 'native', indicating +# a target of whatever platform the script is running on. +TARGET=$1 +# SOURCE is the directory containing the toplevel configure. +SOURCE=$2 + +# PREFIX is the directory for the --prefix option to configure. +# For cross compilers, it needs to contain header files, +# libraries, and binutils. PATH should probably include +# $PREFIX/bin. +PREFIX=$3 +# This script also needs to include the GDB testsuite in +# $PREFIX/share/gdb-testsuite. +GDB_TESTSUITE=$PREFIX/share/gdb-testsuite + +# STATE is where the tester maintains its internal state, +# described below. +STATE=$4 + +# BUILD is a temporary directory that this script will +# delete and recreate, containing the build tree. +BUILD=$5 + +# you also probably need to set these variables: +# PATH: should contain a native gcc, and a cross gdb. +# DEJAGNU: should point to a site.exp suitable for testing +# the compiler and debugger. + + +# OUTPUT: in $RESULT, one of the following keywords: +# error the script failed due to +# a misconfiguration or resource limitation +# build the build failed +# regress-<n> the build succeeded, but there were <n> +# testsuite regressions, listed in $REGRESS +# pass build succeeded and there were no regressions +RESULT=$STATE/RESULT +# in BUILD_LOG, the output of the build +BUILD_LOG=$STATE/build_log +# in FAILED, a list of failing testcases +FAILED=$STATE/failed +# in PASSES, the list of testcases we expect to pass +PASSES=$STATE/passes +# in REGRESS, a list of testcases we expected to pass but that failed +REGRESS=$STATE/regress + +# Make sure various files exist. +[ -d $STATE ] || mkdir $STATE +[ -f $PASSES ] || touch $PASSES + +# These lines should stay in this order, because +# that way if something is badly wrong and $RESULT can't +# be modified then cron will mail the error message. +# The reverse order could lead to the testsuite claiming that +# everything always passes, without running any tests. +echo error > $RESULT || exit 1 +exec > $BUILD_LOG 2>&1 || exit 1 + +set -x + +# Nuke $BUILD and recreate it. +rm -rf $BUILD $REGRESS $FAILED +mkdir $BUILD || exit 1 +cd $BUILD || exit 1 + +H_BUILD=`$SOURCE/config.guess || exit 1` +H_HOST=$H_BUILD +if [ $TARGET = native ] ; then + H_TARGET=$H_HOST +else + H_TARGET=$TARGET +fi +H_REAL_TARGET=`$SOURCE/config.sub $H_TARGET || exit 1` + +# TESTLOGS is the list of dejagnu .sum files that the tester should +# look at. +TESTLOGS="gcc/testsuite/gcc/gcc.sum +gcc/testsuite/g++/g++.sum +gcc/testsuite/objc/objc.sum" + +# Build. +echo build > $RESULT +if [ $H_HOST = $H_TARGET ] ; then + $SOURCE/configure --prefix=$PREFIX --target=$H_TARGET || exit 1 + if ! make $dashj bootstrap ; then + [ -s .bad_compare ] || exit 1 + cat .bad_compare >> $REGRESS || exit 1 + touch compare || exit 1 # Prevent the comparison from running again + make $dashj all || exit 1 + fi +else + withopt="--with-gnu-ld --with-gnu-as" + case "$H_TARGET" in + *-linux*) ;; + *) withopt="$withopt --with-newlib";; + esac + $SOURCE/configure --prefix=$PREFIX --target=$H_TARGET $withopt || exit 1 + make $dashj || exit 1 +fi +echo error > $RESULT || exit 1 + +# Test GCC against its internal testsuite. +make $dashj -k check + +if [ -f gcc/testsuite/gfortran/gfortran.sum ] ; then + TESTLOGS="$TESTLOGS gcc/testsuite/gfortran/gfortran.sum" +fi + +if [ -f $BUILD/$H_TARGET/libstdc++-v3/testsuite/libstdc++.sum ] ; then + TESTLOGS="$TESTLOGS $H_TARGET/libstdc++-v3/testsuite/libstdc++.sum" +fi + +if [ -f $BUILD/$H_TARGET/libffi/testsuite/libffi.sum ] ; then + TESTLOGS="$TESTLOGS $H_TARGET/libffi/testsuite/libffi.sum" +fi + +if [ -f $BUILD/$H_TARGET/libjava/testsuite/libjava.sum ] ; then + TESTLOGS="$TESTLOGS $H_TARGET/libjava/testsuite/libjava.sum" +fi + +if [ -f $BUILD/$H_TARGET/libgomp/testsuite/libgomp.sum ] ; then + TESTLOGS="$TESTLOGS $H_TARGET/libgomp/testsuite/libgomp.sum" +fi + +if [ -f $BUILD/$H_TARGET/libmudflap/testsuite/libmudflap.sum ] ; then + TESTLOGS="$TESTLOGS $H_TARGET/libmudflap/testsuite/libmudflap.sum" +fi + +# Test the just-built GCC with the GDB testsuite. +if [ -d $GDB_TESTSUITE ] ; then + mkdir test-gdb || exit 1 + cd $GDB_TESTSUITE || exit 1 + for i in gdb.* ; do + if [ -d $i ] ; then + mkdir $BUILD/test-gdb/$i + fi + done + cd $BUILD/test-gdb || exit 1 + echo "set host_alias $H_HOST" > site.exp + echo "set host_triplet $H_HOST" >> site.exp + echo "set target_alias $H_TARGET" >> site.exp + echo "set target_triplet $H_REAL_TARGET" >> site.exp + echo "set build_alias $H_BUILD" >> site.exp + echo "set build_triplet $H_BUILD" >> site.exp + echo "set srcdir $GDB_TESTSUITE" >> site.exp + runtest --tool gdb + TESTLOGS="$TESTLOGS test-gdb/gdb.sum" +fi + +# Sanity-check the testlogs. They should contain at least one PASS. +cd $BUILD || exit 1 +for LOG in $TESTLOGS ; do + if ! grep ^PASS: $LOG > /dev/null ; then + echo build > $RESULT + exit 1 + fi +done + +# Work out what failed +for LOG in $TESTLOGS ; do + L=`basename $LOG` + awk '/^FAIL: / { print "'$L'",$2; }' $LOG || exit 1 +done | sort | uniq > $FAILED || exit 1 +comm -12 $FAILED $PASSES >> $REGRESS || exit 1 +NUMREGRESS=`wc -l < $REGRESS | tr -d ' '` + +if [ $NUMREGRESS -eq 0 ] || [ $add_passes_despite_regression -ne 0 ] ; then + # Update the state. + for LOG in $TESTLOGS ; do + L=`basename $LOG` + awk '/^PASS: / { print "'$L'",$2; }' $LOG || exit 1 + done | sort | uniq | comm -23 - $FAILED > ${PASSES}~ || exit 1 + [ -s ${PASSES}~ ] || exit 1 + if [ $NUMREGRESS -ne 0 ] ; then + # The way we keep track of new PASSes when in "regress-N" for + # --add-passes-despite-regression, is to *add* them to previous + # PASSes. Just as without this option, we don't forget *any* PASS + # lines, because besides the ones in $REGRESS that we definitely + # don't want to lose, their removal or rename may have been a + # mistake (as in, the cause of the "regress-N" state). If they + # come back, we then know they're regressions. + cat ${PASSES}~ ${PASSES} | sort -u > ${PASSES}~~ + mv ${PASSES}~~ ${PASSES} || exit 1 + rm ${PASSES}~ || exit 1 + else + # In contrast to the merging for "regress-N", we just overwrite + # the known PASSes when in the "pass" state, so we get rid of + # stale PASS lines for removed, moved or otherwise changed tests + # which may be added back with a different meaning later on. + mv ${PASSES}~ ${PASSES} || exit 1 + fi +fi + +if [ $NUMREGRESS -ne 0 ] ; then + echo regress-$NUMREGRESS > $RESULT + exit 1 +fi + +echo pass > $RESULT +exit 0 diff --git a/gcc-4.8.3/contrib/regression/mkindex.pl b/gcc-4.8.3/contrib/regression/mkindex.pl new file mode 100755 index 000000000..46e11069f --- /dev/null +++ b/gcc-4.8.3/contrib/regression/mkindex.pl @@ -0,0 +1,107 @@ +#!/usr/bin/perl + +# Copy log files from a GCC build for HTTP access. +# Copyright (C) 2008, 2009 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# INPUT: +# mkindex.pl <srcdir> <destdir> <branchname> + +# This script copies log files from a GCC build directory, compresses +# and indexes them for web browser access. It's aimed at having an +# easy-to-access collection of files for analyzing regressions without +# needing to run the build yourself. Binary files (.o, executables) +# are intentionally not included since usually if they are needed it's +# better to just run a build, and because they take up a lot of space. + +# 'srcdir' is the root directory of a GCC build (was $objdir in the build). +# 'destdir' will be erased and replaced with the log files, and should be an +# absolute path. +# 'branchname' is used only to produce the title of the index page, +# which will be named 'index.html'. + +use warnings; +use strict; +use File::Path qw(mkpath rmtree); +use File::Find qw(find); + +if ($#ARGV != 2) { + print "usage: $0 <srcdir> <destdir> <branchname>\n"; + exit 1; +} + +my ($srcdir, $destdir, $branchname) = @ARGV; +die "destdir is not absolute" unless ($destdir =~ m,^/,); + +# Erase the destination. +rmtree $destdir; +mkdir $destdir or die "${destdir}: $!"; + +# Copy and compress the files into the destination, and keep a list in @files. +my @files = (); +sub my_wanted { + # Copy all files ending with .log or .sum. + if (/\.(log|sum)$/ && -f) { + + die unless (substr ($File::Find::dir,0,(length $srcdir)) eq $srcdir); + my $dir = substr $File::Find::dir,(length $srcdir); + $dir = substr $dir,1 unless ($dir eq ''); + my $name = $_; + $name = $dir . '/' . $_ if ($dir ne ''); + + mkpath $destdir . '/' . $dir; + # Compress the files. Use .gzip instead of .gz for the + # extension to avoid (broken) browser workarounds for broken + # web servers. + system ("gzip -c -q -9 $_ > $destdir/${name}.gzip") == 0 or exit 2; + + # Write the (compressed) size consistently in Kbytes. + my $size = -s $destdir .'/' . $name . '.gzip'; + my $printable_size = (sprintf "%.0fK",$size / 1024); + + push @files,[$name.'.gzip',$name,$printable_size]; + } +} +find ({wanted => \&my_wanted}, $srcdir); + +# Sort the list of files for the index. +@files = sort {$a->[1] cmp $b->[1]} @files; + +# Create the index. +open INDEX,'>',$destdir . '/index.html' or die "${destdir}/index.html: $!"; +# Use strict XHTML 1.0, and set charset to UTF-8. +print INDEX <<EOF or die "writing index: $!"; +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>Log files for $branchname</title> + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +</head> +<body> +<h1>Log files for $branchname</h1> +<table><tr><th>Name</th><th align='right'>Size</th></tr> +EOF +# The index will have two columns, filename (without .gzip) and +# compressed size. +foreach my $f (@files) { + printf INDEX "<tr><td><a href=\"%s\">%s</a></td><td align=\'right\'>%s</td></tr>\n", + $f->[0], $f->[1], $f->[2] or die "writing index: $!"; +} + +print INDEX "</table></body></html>\n" or die "writing index: $!"; +close INDEX or die "writing index: $!"; +exit 0; diff --git a/gcc-4.8.3/contrib/regression/objs-gcc.sh b/gcc-4.8.3/contrib/regression/objs-gcc.sh new file mode 100755 index 000000000..60b0497fe --- /dev/null +++ b/gcc-4.8.3/contrib/regression/objs-gcc.sh @@ -0,0 +1,128 @@ +#!/bin/sh + +# Build tools for testing GCC. +# Copyright (C) 1999, 2000, 2001, 2002, 2009 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# INPUT: +# btest <target> <source> <prefix> <state> <build> +# TARGET is the target triplet. It should be the same one as used in +# constructing PREFIX. Or it can be the keyword 'native', indicating +# a target of whatever platform the script is running on. +TARGET=$1 +# SOURCE is the directory containing the toplevel configure. +SOURCE=$2 + +# PREFIX is the directory for the --prefix option to configure. +PREFIX=$3 + +# STATE is where the tester maintains its internal state, +# described below. +STATE=$4 + +# BUILD is a temporary directory that this script will +# delete and recreate, containing the build tree. +BUILD=$5 + +# you also probably need to set these variables: +# DEJAGNU: should point to a site.exp suitable for testing +# the compiler and debugger. + +# OUTPUT: in $RESULT, one of the following keywords: +# error the script failed due to +# a misconfiguration or resource limitation +# build the build failed +# regress-<n> the build succeeded, but there were <n> +# testsuite regressions, listed in $REGRESS +# pass build succeeded and there were no regressions +RESULT=$STATE/RESULT +# in BUILD_LOG, the output of the build +BUILD_LOG=$STATE/build_log +# in FAILED, a list of failing testcases +FAILED=$STATE/failed +# in PASSES, the list of testcases we expect to pass +PASSES=$STATE/passes +# in REGRESS, a list of testcases we expected to pass but that failed +REGRESS=$STATE/regress + +# Make sure various files exist. +[ -d $STATE ] || mkdir $STATE +[ -f $PASSES ] || touch $PASSES + +# These lines should stay in this order, because +# that way if something is badly wrong and $RESULT can't +# be modified then cron will mail the error message. +# The reverse order could lead to the testsuite claiming that +# everything always passes, without running any tests. +echo error > $RESULT || exit 1 +exec > $BUILD_LOG 2>&1 || exit 1 + +set -x + +# TESTLOGS is the list of dejagnu .sum files that the tester should +# look at. +TESTLOGS="test/gcc/gcc.sum +test/g++/g++.sum" + +# Nuke $BUILD and recreate it. +rm -rf $BUILD $REGRESS $FAILED +mkdir $BUILD $BUILD/build $BUILD/objs || exit 1 +cd $BUILD || exit 1 + +# This script used to use config.guess, but that is not how releng +# determines hostnames. +H_BUILD=`$SOURCE/config.guess || exit 1` +H_HOST=$H_BUILD +if [ $TARGET = native ] ; then + H_TARGET=$H_HOST +else + H_TARGET=$TARGET +fi +H_REAL_TARGET=`$SOURCE/config.sub $H_TARGET || exit 1` +H_REAL_BUILD=`$SOURCE/config.sub $H_BUILD || exit 1` +H_REAL_HOST=`$SOURCE/config.sub $H_HOST || exit 1` + +# Build. +echo build > $RESULT + +cd $BUILD/build || exit 1 +TMP_PREFIX=$BUILD/install +$SOURCE/configure --prefix=$PREFIX --target=$H_TARGET || exit 1 +if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ] + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 +elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 +else + make || exit 1 + make install || exit 1 +fi + +if [ -x $PREFIX/bin/$TARGET-gdb ] ; then + mkdir -p $PREFIX/share/gdb-testsuite || exit 1 + cd $SOURCE/gdb/testsuite || exit 1 + find . -print | cpio -pdmu $PREFIX/share/gdb-testsuite || exit 1 + # selftest.exp requires keeping old sources around, which is impractical + rm $PREFIX/share/gdb-testsuite/gdb.base/selftest.exp + # these tests seem to be broken and randomly failing + rm -r $PREFIX/share/gdb-testsuite/gdb.mi +fi + +echo pass > $RESULT +exit 0 diff --git a/gcc-4.8.3/contrib/regression/site.exp b/gcc-4.8.3/contrib/regression/site.exp new file mode 100644 index 000000000..0892afa3a --- /dev/null +++ b/gcc-4.8.3/contrib/regression/site.exp @@ -0,0 +1,18 @@ +global target_list + +case "$target_triplet" in { + { "powerpc*-*eabi*" } { +# if { [info exists tool] && $tool == "gcc" } { +# set target_list { "powerpc-sim{,-fpic}" } +# } else { + set target_list { "powerpc-sim" } +# } + } + { "mips*-*-elf" } { + set target_list { "mips-sim" } + } + + default { + set target_list { "unix" } + } +} diff --git a/gcc-4.8.3/contrib/repro_fail b/gcc-4.8.3/contrib/repro_fail new file mode 100755 index 000000000..b28a7127b --- /dev/null +++ b/gcc-4.8.3/contrib/repro_fail @@ -0,0 +1,94 @@ +#!/bin/bash -eu +# +# Script to reproduce a test failure from a dejagnu .log file. +# +# Contributed by Diego Novillo <dnovillo@google.com> +# +# Copyright (C) 2011, 2012 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# This script will search a line starting with 'spawn' that includes the +# pattern you are looking for (typically a source file name). +# +# Once it finds that pattern, it re-executes the whole command +# in the spawn line. If the pattern matches more than one spawn +# command, it asks which one you want. + +if [ $# -lt 2 ] ; then + echo "usage: $0 [--debug|--debug-tui] pattern file.log [additional-args]" + echo + echo "Finds the 'spawn' line matching PATTERN in FILE.LOG and executes" + echo "the command with any arguments in ADDITIONAL-ARGS." + echo + echo "If --debug is used, the compiler is invoked with -wrapper gdb,--args" + echo "If --debug-tui is used, the compiler is invoked with -wrapper "\ + "gdb,--tui,--args" + exit 1 +fi + +if [ "$1" == "--debug" ] ; then + debug_args="-wrapper gdb,--args" + shift +elif [ "$1" == "--debug-tui" ] ; then + debug_args="-wrapper gdb,--tui,--args" + shift +else + debug_args="" +fi +pattern="$1" +logf="$2" +shift 2 + +# Find the commands in LOGF that reference PATTERN. +lines=$(grep -E "^spawn .*$pattern" $logf | sed -e 's/^spawn //') +if [ -z "$lines" ] ; then + echo "Could not find a spawn command for pattern $pattern" + exit 1 +fi + +# Collect all the command lines into the COMMANDS array. +old_IFS="$IFS" +IFS="
" +num_lines=0 +for line in $lines ; do + num_lines=$[$num_lines + 1] + echo "[$num_lines] $line" + commands[$num_lines]=$line +done + +# If we found more than one line for PATTERN, ask which one we should run. +cmds_to_run='0' +if [ $num_lines -gt 1 ] ; then + echo + echo + echo -n "Enter the list of commands to run or '0' to run them all: " + read cmds_to_run +fi +if [ "$cmds_to_run" = "0" ] ; then + cmds_to_run=$(seq 1 $num_lines) +fi +IFS="$old_IFS" + +# Finally, execute all the commands we were told to execute. +for cmd_num in $cmds_to_run ; do + cmd=${commands[$cmd_num]} + set -x +e + $cmd $debug_args "$@" + set +x -e +done diff --git a/gcc-4.8.3/contrib/test_installed b/gcc-4.8.3/contrib/test_installed new file mode 100755 index 000000000..e518cbcf7 --- /dev/null +++ b/gcc-4.8.3/contrib/test_installed @@ -0,0 +1,121 @@ +#! /bin/sh + +# (C) 1998, 2000, 2002, 2003, 2007 Free Software Foundation +# Originally by Alexandre Oliva <oliva@dcc.unicamp.br> + +# 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 + +# This scripts assumes it lives in the contrib directory of the GCC +# source tree, so it will find the testsuite tree from its location. +# If you move it elsewhere, or want to use another testsuite tree, you +# can override the defaults with --srcdir=/some/dir/GCC or +# --testsuite=/some/dir/GCC/gcc/testsuite. If you specify +# --testsuite, --srcdir will be ignored; otherwise, `/gcc/testsuite' +# will be appended to the srcdir. + +# You may specify where the binaries to be tested should be picked up +# from. If you specify --prefix=/some/dir, gcc, g++ and gfortran will be +# looked for at /some/dir/bin. Each one may be overridden by +# specifying --with-gcc=/pathname/to/gcc, --with-g++=/pathname/to/g++ +# and --with-gfortran=/pathname/to/gfortran. If you specify --without-gcc, +# --without-g++ or --without-gfortran, the test for the specified program +# will be skipped. By default, gcc, g++ and gfortran will be searched in +# the PATH. + +# An additional argument may specify --tmpdir=/some/dir; by default, +# temporaries will be stored in the current directory, where the log +# files will be stored. + +# The script will interpret arguments until it finds one it does not +# understand. The remaining ones will be passed to `runtest'. A +# double-dash can be used to explicitly separate the arguments to +# `test_installed' from the ones to `runtest'. + +# This script should be run in an empty directory; it will refuse to +# run if it finds a file named site.exp in the current directory. + + +if test -f site.exp; then + echo site.exp already exists >&2 + exit 1 +fi + +while true; do + case "$1" in + --with-testsuite=*) testsuite=`echo "$1" | sed 's/[^=]*=//'`; shift;; + --srcdir=*) srcdir=`echo "$1" | sed 's/[^=]*=//'`; shift;; + + --prefix=*) prefix=`echo "$1" | sed 's/[^=]*=//'`; shift;; + --with-gcc=*) GCC_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;; + --with-g++=*) GXX_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;; + --with-gfortran=*) GFORTRAN_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;; + --without-gcc) GCC_UNDER_TEST=no; shift;; + --without-g++) GXX_UNDER_TEST=no; shift;; + --without-gfortran) GFORTRAN_UNDER_TEST=no; shift;; + --without-objc) OBJC_UNDER_TEST=no; shift;; + + --tmpdir=*) tmpdir=`echo "$1" | sed 's/[^=]*=//'`; shift;; + + --help) cat <<\EOF +Runs the testsuite for an installed version of gcc/g++/gfortran/objc +Copyright (C) 1998 Free Software Foundation +by Alexandre Oliva <oliva@dcc.unicamp.br> + +Supported arguments: + +--help prints this page + +--with-testsuite=/some/dir/gcc/testsuite specify the testsuite directory +--srcdir=/some/dir same as --with-testsuite=/some/dir/gcc/testsuite + [deduced from shell-script pathname] + +--prefix=/some/dir use gcc, g++ and gfortran from /some/dir/bin [PATH] +--with-gcc=/some/dir/bin/gcc use specified gcc program [gcc] +--with-g++=/some/dir/bin/g++ use specified g++ program [g++] +--with-gfortran=/some/dir/bin/gfortran use specified gfortran program [gfortran] +--without-gcc do not run gcc testsuite +--without-g++ do not run g++ testsuite +--without-gfortran do not run gfortran testsuite +--without-objc do not run objc testsuite + +--tmpdir=/some/dir create temporaries and leave failed programs + at specified directory [.] + +-- end of argument list; following arguments are passed to runtest +EOF + exit + ;; + + --) shift; break;; + *) break;; + esac +done + +if test x"${testsuite+set}" != x"set" && test x"${srcdir+set}" != x"set"; then + file=$0 + while [ -h $file ]; do + file=`ls -l $file | sed s/'.* -> '//` + done + srcdir=`CDPATH=. && cd \`echo "$file" | sed 's,/*[^/]*$,,;s,^$,.,'\`/.. >/dev/null && ${PWDCMD-pwd}` +fi + +cat >site.exp <<EOF +set rootme "." +set tmpdir "${tmpdir-`${PWDCMD-pwd}`}" +set srcdir "${testsuite-${srcdir}/gcc/testsuite}" +set CFLAGS "" +set CXXFLAGS "" +set GCC_UNDER_TEST "${GCC_UNDER_TEST-${prefix}${prefix+/bin/}gcc}" +set GXX_UNDER_TEST "${GXX_UNDER_TEST-${prefix}${prefix+/bin/}g++}" +set GFORTRAN_UNDER_TEST "${GFORTRAN_UNDER_TEST-${prefix}${prefix+/bin/}gfortran}" +set OBJC_UNDER_TEST "${OBJC_UNDER_TEST-${prefix}${prefix+/bin/}gcc}" +EOF + +test x"${GCC_UNDER_TEST}" = x"no" || runtest --tool gcc ${1+"$@"} +test x"${GXX_UNDER_TEST}" = x"no" || runtest --tool g++ ${1+"$@"} +test x"${GFORTRAN_UNDER_TEST}" = x"no" || runtest --tool gfortran ${1+"$@"} +test x"${OBJC_UNDER_TEST}" = x"no" || runtest --tool objc ${1+"$@"} + +exit 0 diff --git a/gcc-4.8.3/contrib/test_recheck b/gcc-4.8.3/contrib/test_recheck new file mode 100755 index 000000000..193cd3df2 --- /dev/null +++ b/gcc-4.8.3/contrib/test_recheck @@ -0,0 +1,98 @@ +#! /bin/sh + +# (C) 2010 Free Software Foundation +# 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 + +PROGNAME=test_recheck + +usage () +{ + cat <<EOF +Usage: $PROGNAME [-h] [-n] DIR|FILE.sum... + +Rerun unsuccessful tests for testsuites below DIR or for FILE.sum. + + -h display this help and exit + -n dry run, only show what would be run +EOF + exit $? +} + +error () +{ + echo "$@" >&2 + exit 1 +} + +dry= +for arg +do + case $arg in + -h | \?) usage ;; + -n) dry=:; shift ;; + -*) error "unknown argument $arg" ;; + *) break ;; + esac +done +test $# -gt 0 || usage + +# 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 + +: ${MAKE=make} +: ${filesuffix=} +cwd=`pwd` +files=`find "$@" -name \*.sum$filesuffix -print | grep testsuite | sort` +st=0 + +for file in $files; do + dir=`echo $file | sed 's,/[^/]*$,,'` + base=`echo $file | sed 's,.*/,,; s,\.sum$,,'` + flags=`$AWK ' +/^Running .*\.exp \.\.\./ { + if (expfile != "" && tests != "") + printf (" %s=\"%s\"", expfile, tests) + expfile = $2 + sub (/^[^ ]*\//, "", expfile) + sep = "" + tests = "" +} +/^(FAIL|XPASS|UNRESOLVED|WARNING|ERROR): / { + if (test != $2 "" && $2 != "" ) { + test = $2 + tests = tests sep test + sep = " " + } +} +END { + if (expfile != "" && tests != "") + printf (" %s=\"%s\"", expfile, tests) +}' $file` + if test -n "$flags"; then + cd $dir + amflags= + if grep '^AM_RUNTESTFLAGS =' Makefile >/dev/null 2>&1; then + amflags=`echo 'print-runtestflags: ; @echo $(AM_RUNTESTFLAGS)' \ + | ${MAKE} -s -f Makefile -f - print-runtestflags` + fi + echo "(cd $dir && runtest $amflags --tool $base $flags)" + if test -z "$dry"; then + eval runtest --tool $base $flags || st=$? + fi + cd "$cwd" + fi +done +exit $st diff --git a/gcc-4.8.3/contrib/test_summary b/gcc-4.8.3/contrib/test_summary new file mode 100755 index 000000000..5fc49f52b --- /dev/null +++ b/gcc-4.8.3/contrib/test_summary @@ -0,0 +1,156 @@ +#! /bin/sh + +# (C) 1998, 1999, 2000, 2002, 2003, 2004, 2007, 2009, 2010 +# Free Software Foundation +# Originally by Alexandre Oliva <oliva@dcc.unicamp.br> + +# 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 + +# This script processes *.{sum,log} files, producing a shell-script +# that sends e-mail to the appropriate lists and renames files to +# *.sent. It currently handles only gcc, but it should be quite easy +# to modify it to handle other packages and its mailing lists. + +# The scripts assumes it is run in the root directory of the build +# tree, and it will include all .sum files it finds in the mail +# report. + +# configure flags are extracted from ./config.status + +# if the BOOT_CFLAGS environment variable is set, it will be included +# in the mail report too. + +# The usage pattern of this script is as follows: + +# test_summary | more # so as to observe what should be done + +# test_summary | sh # so as to actually send e-mail and move log files + +# It accepts a few command line arguments. For example: +if test x"$1" = "x-h"; then + cat <<_EOF + -o: re-reads logs that have been mailed already (.sum.sent) + -t: prevents logs from being renamed + -p: prepend specified file (or list of files: -p "a b") to the report + -i: append specified file (or list of files: -i "a b") to the report + -m: specify the e-mail address to send notes to. An appropriate default + should be selected from the log files. + -f: force reports to be mailed; if omitted, only reports that differ + from the sent.* version are sent. +_EOF + exit 0 +fi + +# 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 + +: ${filesuffix=}; export filesuffix +: ${move=true}; export move +: ${forcemail=false}; export forcemail +while true; do + case "$1" in + -o) filesuffix=.sent; move=false; : ${mailto=nobody}; shift;; + -t) move=false; shift;; + -p) prepend_logs=${prepend_logs+"$prepend_logs "}"$2"; shift 2;; + -i) append_logs=${append_logs+"$append_logs "}"$2"; shift 2;; + -m) mailto=$2; forcemail=true; shift 2;; + -f) unset mailto; forcemail=true; shift;; + *) break;; + esac +done +: ${mailto="\" address \""}; export mailto +files=`find . -name \*.sum$filesuffix -print | sort` +anyfile=false anychange=$forcemail && +for file in $files; do + [ -f $file ] && + anyfile=true && + { $anychange || + anychange=`diff $file.sent $file 2>/dev/null | + if test ! -f $file.sent || + egrep '^[<>] (XPASS|FAIL)' >/dev/null; then + echo true + else + echo false + fi + ` + } + true +done && +$anyfile && +if $forcemail || $anychange; then :; else mailto=nobody; fi && +# We use cat instead of listing the files as arguments to AWK because +# GNU awk 3.0.0 would break if any of the filenames contained `=' and +# was preceded by an invalid ``variable'' name. +( echo @TOPLEVEL_CONFIGURE_ARGUMENTS@ | ./config.status --file=-; cat $files ) | +$AWK ' +BEGIN { + lang=""; configflags = ""; + address="gcc-testresults@gcc.gnu.org"; + version="gcc"; + print "cat <<'"'"'EOF'"'"' |"; +'${prepend_logs+" system(\"cat $prepend_logs\"); "}' +} +NR == 1 { + configflags = $0 " "; + srcdir = configflags; + sub(/\/configure .*/, "", srcdir); + if ( system("test -f " srcdir "/LAST_UPDATED") == 0 ) { + printf "LAST_UPDATED: "; + system("tail -1 " srcdir "/LAST_UPDATED"); + print ""; + } + + sub(/^[^ ]*\/configure */, " ", configflags); + sub(/,;t t $/, " ", configflags); + sub(/ --with-gcc-version-trigger=[^ ]* /, " ", configflags); + sub(/ --norecursion /, " ", configflags); + sub(/ $/, "", configflags); + sub(/^ *$/, " none", configflags); + configflags = "configure flags:" configflags; +} +/^Running target / { print ""; print; } +/^Target / { if (host != "") next; else host = $3; } +/^Host / && host ~ /^unix\{.*\}$/ { host = $3 " " substr(host, 5); } +/^Native / { if (host != "") next; else host = $4; } +/^[ ]*=== [^ ]+ tests ===/ { + if (lang == "") lang = " "$2" "; else lang = " "; +} +$2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; } +/\===.*Summary/ { print ""; print; blanks=1; } +/tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; } +/^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { sub ("\r", ""); print; } +/^using:/ { print ""; print; print ""; } +# dumpall != 0 && /^X?(PASS|FAIL|UNTESTED)|^testcase/ { dumpall=0; } +# dumpall != 0 { print; } +# /^FAIL/ { dumpall=1; } +/^$/ && blanks>0 { print; --blanks; } +END { if (lang != "") { + print ""; + print "Compiler version: " prefix version lang; + print "Platform: " host; + print configflags; + '${BOOT_CFLAGS+'print "BOOT_CFLAGS='"${BOOT_CFLAGS}"'";'}' + if (boot_cflags != 0) print boot_cflags; +'${append_logs+" system(\"cat $append_logs\"); "}' + print "EOF"; + print "Mail -s \"Results for " prefix version lang "testsuite on " host "\" '"${mailto}"' &&"; +}} +{ next; } +' | sed "s/\([\`\$\\\\]\)/\\\\\\1/g" && +if $move; then + for file in $files `ls -1 $files | sed s/sum$/log/`; do + [ -f $file ] && echo "mv `${PWDCMD-pwd}`/$file `${PWDCMD-pwd}`/$file.sent &&" + done +fi && +echo true +exit 0 diff --git a/gcc-4.8.3/contrib/testsuite-management/validate_failures.py b/gcc-4.8.3/contrib/testsuite-management/validate_failures.py new file mode 100755 index 000000000..74dbcfb03 --- /dev/null +++ b/gcc-4.8.3/contrib/testsuite-management/validate_failures.py @@ -0,0 +1,533 @@ +#!/usr/bin/python + +# Script to compare testsuite failures against a list of known-to-fail +# tests. +# +# NOTE: This script is used in installations that are running Python 2.4. +# Please stick to syntax features available in 2.4 and earlier +# versions. + +# Contributed by Diego Novillo <dnovillo@google.com> +# +# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +"""This script provides a coarser XFAILing mechanism that requires no +detailed DejaGNU markings. This is useful in a variety of scenarios: + +- Development branches with many known failures waiting to be fixed. +- Release branches with known failures that are not considered + important for the particular release criteria used in that branch. + +The script must be executed from the toplevel build directory. When +executed it will: + +1- Determine the target built: TARGET +2- Determine the source directory: SRCDIR +3- Look for a failure manifest file in + <SRCDIR>/<MANIFEST_SUBDIR>/<MANIFEST_NAME>.xfail +4- Collect all the <tool>.sum files from the build tree. +5- Produce a report stating: + a- Failures expected in the manifest but not present in the build. + b- Failures in the build not expected in the manifest. +6- If all the build failures are expected in the manifest, it exits + with exit code 0. Otherwise, it exits with error code 1. + +Manifest files contain expected DejaGNU results that are otherwise +treated as failures. +They may also contain additional text: + +# This is a comment. - self explanatory +@include file - the file is a path relative to the includer +@remove result text - result text is removed from the expected set +""" + +import datetime +import optparse +import os +import re +import sys + +# Handled test results. +_VALID_TEST_RESULTS = [ 'FAIL', 'UNRESOLVED', 'XPASS', 'ERROR' ] +_VALID_TEST_RESULTS_REX = re.compile("%s" % "|".join(_VALID_TEST_RESULTS)) + +# Subdirectory of srcdir in which to find the manifest file. +_MANIFEST_SUBDIR = 'contrib/testsuite-management' + +# Pattern for naming manifest files. +# The first argument should be the toplevel GCC(/GNU tool) source directory. +# The second argument is the manifest subdir. +# The third argument is the manifest target, which defaults to the target +# triplet used during the build. +_MANIFEST_PATH_PATTERN = '%s/%s/%s.xfail' + +# The options passed to the program. +_OPTIONS = None + +def Error(msg): + print >>sys.stderr, 'error: %s' % msg + sys.exit(1) + + +class TestResult(object): + """Describes a single DejaGNU test result as emitted in .sum files. + + We are only interested in representing unsuccessful tests. So, only + a subset of all the tests are loaded. + + The summary line used to build the test result should have this format: + + attrlist | XPASS: gcc.dg/unroll_1.c (test for excess errors) + ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ + optional state name description + attributes + + Attributes: + attrlist: A comma separated list of attributes. + Valid values: + flaky Indicates that this test may not always fail. These + tests are reported, but their presence does not affect + the results. + + expire=YYYYMMDD After this date, this test will produce an error + whether it is in the manifest or not. + + state: One of UNRESOLVED, XPASS or FAIL. + name: File name for the test. + description: String describing the test (flags used, dejagnu message, etc) + ordinal: Monotonically increasing integer. + It is used to keep results for one .exp file sorted + by the order the tests were run. + """ + + def __init__(self, summary_line, ordinal=-1): + try: + self.attrs = '' + if '|' in summary_line: + (self.attrs, summary_line) = summary_line.split('|', 1) + try: + (self.state, + self.name, + self.description) = re.match(r' *([A-Z]+):\s*(\S+)\s+(.*)', + summary_line).groups() + except: + print 'Failed to parse summary line: "%s"' % summary_line + raise + self.attrs = self.attrs.strip() + self.state = self.state.strip() + self.description = self.description.strip() + self.ordinal = ordinal + except ValueError: + Error('Cannot parse summary line "%s"' % summary_line) + + if self.state not in _VALID_TEST_RESULTS: + Error('Invalid test result %s in "%s" (parsed as "%s")' % ( + self.state, summary_line, self)) + + def __lt__(self, other): + return (self.name < other.name or + (self.name == other.name and self.ordinal < other.ordinal)) + + def __hash__(self): + return hash(self.state) ^ hash(self.name) ^ hash(self.description) + + def __eq__(self, other): + return (self.state == other.state and + self.name == other.name and + self.description == other.description) + + def __ne__(self, other): + return not (self == other) + + def __str__(self): + attrs = '' + if self.attrs: + attrs = '%s | ' % self.attrs + return '%s%s: %s %s' % (attrs, self.state, self.name, self.description) + + def ExpirationDate(self): + # Return a datetime.date object with the expiration date for this + # test result. Return None, if no expiration has been set. + if re.search(r'expire=', self.attrs): + expiration = re.search(r'expire=(\d\d\d\d)(\d\d)(\d\d)', self.attrs) + if not expiration: + Error('Invalid expire= format in "%s". Must be of the form ' + '"expire=YYYYMMDD"' % self) + return datetime.date(int(expiration.group(1)), + int(expiration.group(2)), + int(expiration.group(3))) + return None + + def HasExpired(self): + # Return True if the expiration date of this result has passed. + expiration_date = self.ExpirationDate() + if expiration_date: + now = datetime.date.today() + return now > expiration_date + + +def GetMakefileValue(makefile_name, value_name): + if os.path.exists(makefile_name): + makefile = open(makefile_name) + for line in makefile: + if line.startswith(value_name): + (_, value) = line.split('=', 1) + value = value.strip() + makefile.close() + return value + makefile.close() + return None + + +def ValidBuildDirectory(builddir, target): + if (not os.path.exists(builddir) or + not os.path.exists('%s/Makefile' % builddir) or + (not os.path.exists('%s/build-%s' % (builddir, target)) and + not os.path.exists('%s/%s' % (builddir, target)))): + return False + return True + + +def IsComment(line): + """Return True if line is a comment.""" + return line.startswith('#') + + +def IsInterestingResult(line): + """Return True if line is one of the summary lines we care about.""" + if '|' in line: + (_, line) = line.split('|', 1) + line = line.strip() + return bool(_VALID_TEST_RESULTS_REX.match(line)) + + +def IsInclude(line): + """Return True if line is an include of another file.""" + return line.startswith("@include ") + + +def GetIncludeFile(line, includer): + """Extract the name of the include file from line.""" + includer_dir = os.path.dirname(includer) + include_file = line[len("@include "):] + return os.path.join(includer_dir, include_file.strip()) + + +def IsNegativeResult(line): + """Return True if line should be removed from the expected results.""" + return line.startswith("@remove ") + + +def GetNegativeResult(line): + """Extract the name of the negative result from line.""" + line = line[len("@remove "):] + return line.strip() + + +def ParseManifestWorker(result_set, manifest_path): + """Read manifest_path, adding the contents to result_set.""" + if _OPTIONS.verbosity >= 1: + print 'Parsing manifest file %s.' % manifest_path + manifest_file = open(manifest_path) + for line in manifest_file: + line = line.strip() + if line == "": + pass + elif IsComment(line): + pass + elif IsNegativeResult(line): + result_set.remove(TestResult(GetNegativeResult(line))) + elif IsInclude(line): + ParseManifestWorker(result_set, GetIncludeFile(line, manifest_path)) + elif IsInterestingResult(line): + result_set.add(TestResult(line)) + else: + Error('Unrecognized line in manifest file: %s' % line) + manifest_file.close() + + +def ParseManifest(manifest_path): + """Create a set of TestResult instances from the given manifest file.""" + result_set = set() + ParseManifestWorker(result_set, manifest_path) + return result_set + + +def ParseSummary(sum_fname): + """Create a set of TestResult instances from the given summary file.""" + result_set = set() + # ordinal is used when sorting the results so that tests within each + # .exp file are kept sorted. + ordinal=0 + sum_file = open(sum_fname) + for line in sum_file: + if IsInterestingResult(line): + result = TestResult(line, ordinal) + ordinal += 1 + if result.HasExpired(): + # Tests that have expired are not added to the set of expected + # results. If they are still present in the set of actual results, + # they will cause an error to be reported. + print 'WARNING: Expected failure "%s" has expired.' % line.strip() + continue + result_set.add(result) + sum_file.close() + return result_set + + +def GetManifest(manifest_path): + """Build a set of expected failures from the manifest file. + + Each entry in the manifest file should have the format understood + by the TestResult constructor. + + If no manifest file exists for this target, it returns an empty set. + """ + if os.path.exists(manifest_path): + return ParseManifest(manifest_path) + else: + return set() + + +def CollectSumFiles(builddir): + sum_files = [] + for root, dirs, files in os.walk(builddir): + for ignored in ('.svn', '.git'): + if ignored in dirs: + dirs.remove(ignored) + for fname in files: + if fname.endswith('.sum'): + sum_files.append(os.path.join(root, fname)) + return sum_files + + +def GetResults(sum_files): + """Collect all the test results from the given .sum files.""" + build_results = set() + for sum_fname in sum_files: + print '\t%s' % sum_fname + build_results |= ParseSummary(sum_fname) + return build_results + + +def CompareResults(manifest, actual): + """Compare sets of results and return two lists: + - List of results present in ACTUAL but missing from MANIFEST. + - List of results present in MANIFEST but missing from ACTUAL. + """ + # Collect all the actual results not present in the manifest. + # Results in this set will be reported as errors. + actual_vs_manifest = set() + for actual_result in actual: + if actual_result not in manifest: + actual_vs_manifest.add(actual_result) + + # Collect all the tests in the manifest that were not found + # in the actual results. + # Results in this set will be reported as warnings (since + # they are expected failures that are not failing anymore). + manifest_vs_actual = set() + for expected_result in manifest: + # Ignore tests marked flaky. + if 'flaky' in expected_result.attrs: + continue + if expected_result not in actual: + manifest_vs_actual.add(expected_result) + + return actual_vs_manifest, manifest_vs_actual + + +def GetManifestPath(srcdir, target, user_provided_must_exist): + """Return the full path to the manifest file.""" + manifest_path = _OPTIONS.manifest + if manifest_path: + if user_provided_must_exist and not os.path.exists(manifest_path): + Error('Manifest does not exist: %s' % manifest_path) + return manifest_path + else: + assert srcdir and target + return _MANIFEST_PATH_PATTERN % (srcdir, _MANIFEST_SUBDIR, target) + + +def GetBuildData(): + srcdir = GetMakefileValue('%s/Makefile' % _OPTIONS.build_dir, 'srcdir =') + target = GetMakefileValue('%s/Makefile' % _OPTIONS.build_dir, 'target_alias=') + if not ValidBuildDirectory(_OPTIONS.build_dir, target): + # If we have been given a set of results to use, we may + # not be inside a valid GCC build directory. In that case, + # the user must provide both a manifest file and a set + # of results to check against it. + if not _OPTIONS.results or not _OPTIONS.manifest: + Error('%s is not a valid GCC top level build directory. ' + 'You must use --manifest and --results to do the validation.' % + _OPTIONS.build_dir) + else: + return None, None + print 'Source directory: %s' % srcdir + print 'Build target: %s' % target + return srcdir, target + + +def PrintSummary(msg, summary): + print '\n\n%s' % msg + for result in sorted(summary): + print result + + +def GetSumFiles(results, build_dir): + if not results: + print 'Getting actual results from build directory %s' % build_dir + sum_files = CollectSumFiles(build_dir) + else: + print 'Getting actual results from user-provided results' + sum_files = results.split() + return sum_files + + +def PerformComparison(expected, actual, ignore_missing_failures): + actual_vs_expected, expected_vs_actual = CompareResults(expected, actual) + + tests_ok = True + if len(actual_vs_expected) > 0: + PrintSummary('Unexpected results in this build (new failures)', + actual_vs_expected) + tests_ok = False + + if not ignore_missing_failures and len(expected_vs_actual) > 0: + PrintSummary('Expected results not present in this build (fixed tests)' + '\n\nNOTE: This is not a failure. It just means that these ' + 'tests were expected\nto fail, but they worked in this ' + 'configuration.\n', expected_vs_actual) + + if tests_ok: + print '\nSUCCESS: No unexpected failures.' + + return tests_ok + + +def CheckExpectedResults(): + srcdir, target = GetBuildData() + manifest_path = GetManifestPath(srcdir, target, True) + print 'Manifest: %s' % manifest_path + manifest = GetManifest(manifest_path) + sum_files = GetSumFiles(_OPTIONS.results, _OPTIONS.build_dir) + actual = GetResults(sum_files) + + if _OPTIONS.verbosity >= 1: + PrintSummary('Tests expected to fail', manifest) + PrintSummary('\nActual test results', actual) + + return PerformComparison(manifest, actual, _OPTIONS.ignore_missing_failures) + + +def ProduceManifest(): + (srcdir, target) = GetBuildData() + manifest_path = GetManifestPath(srcdir, target, False) + print 'Manifest: %s' % manifest_path + if os.path.exists(manifest_path) and not _OPTIONS.force: + Error('Manifest file %s already exists.\nUse --force to overwrite.' % + manifest_path) + + sum_files = GetSumFiles(_OPTIONS.results, _OPTIONS.build_dir) + actual = GetResults(sum_files) + manifest_file = open(manifest_path, 'w') + for result in sorted(actual): + print result + manifest_file.write('%s\n' % result) + manifest_file.close() + + return True + + +def CompareBuilds(): + (srcdir, target) = GetBuildData() + + sum_files = GetSumFiles(_OPTIONS.results, _OPTIONS.build_dir) + actual = GetResults(sum_files) + + clean_sum_files = GetSumFiles(_OPTIONS.results, _OPTIONS.clean_build) + clean = GetResults(clean_sum_files) + + return PerformComparison(clean, actual, _OPTIONS.ignore_missing_failures) + + +def Main(argv): + parser = optparse.OptionParser(usage=__doc__) + + # Keep the following list sorted by option name. + parser.add_option('--build_dir', action='store', type='string', + dest='build_dir', default='.', + help='Build directory to check (default = .)') + parser.add_option('--clean_build', action='store', type='string', + dest='clean_build', default=None, + help='Compare test results from this build against ' + 'those of another (clean) build. Use this option ' + 'when comparing the test results of your patch versus ' + 'the test results of a clean build without your patch. ' + 'You must provide the path to the top directory of your ' + 'clean build.') + parser.add_option('--force', action='store_true', dest='force', + default=False, help='When used with --produce_manifest, ' + 'it will overwrite an existing manifest file ' + '(default = False)') + parser.add_option('--ignore_missing_failures', action='store_true', + dest='ignore_missing_failures', default=False, + help='When a failure is expected in the manifest but ' + 'it is not found in the actual results, the script ' + 'produces a note alerting to this fact. This means ' + 'that the expected failure has been fixed, or ' + 'it did not run, or it may simply be flaky ' + '(default = False)') + parser.add_option('--manifest', action='store', type='string', + dest='manifest', default=None, + help='Name of the manifest file to use (default = ' + 'taken from ' + 'contrib/testsuite-managment/<target_alias>.xfail)') + parser.add_option('--produce_manifest', action='store_true', + dest='produce_manifest', default=False, + help='Produce the manifest for the current ' + 'build (default = False)') + parser.add_option('--results', action='store', type='string', + dest='results', default=None, help='Space-separated list ' + 'of .sum files with the testing results to check. The ' + 'only content needed from these files are the lines ' + 'starting with FAIL, XPASS or UNRESOLVED (default = ' + '.sum files collected from the build directory).') + parser.add_option('--verbosity', action='store', dest='verbosity', + type='int', default=0, help='Verbosity level (default = 0)') + global _OPTIONS + (_OPTIONS, _) = parser.parse_args(argv[1:]) + + if _OPTIONS.produce_manifest: + retval = ProduceManifest() + elif _OPTIONS.clean_build: + retval = CompareBuilds() + else: + retval = CheckExpectedResults() + + if retval: + return 0 + else: + return 1 + + +if __name__ == '__main__': + retval = Main(sys.argv) + sys.exit(retval) diff --git a/gcc-4.8.3/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail b/gcc-4.8.3/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail new file mode 100644 index 000000000..444606169 --- /dev/null +++ b/gcc-4.8.3/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail @@ -0,0 +1,135 @@ +FAIL: g++.dg/other/anon5.C -std=gnu++98 (test for excess errors) +FAIL: g++.dg/other/anon5.C -std=gnu++11 (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -Os (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -fomit-frame-pointer (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O2 -flto -flto-partition=none (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -O2 -flto -flto-partition=none (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O2 (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O2 -flto (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -g (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -O2 -flto (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O1 (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -fomit-frame-pointer (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -g (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) +FAIL: gcc.c-torture/compile/pr44119.c -O2 (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -Os (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -O1 (internal compiler error) +FAIL: gcc.c-torture/compile/pr44119.c -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) +UNRESOLVED: gcc.dg/attr-weakref-1.c compilation failed to produce executable +FAIL: gcc.dg/attr-weakref-1.c (test for excess errors) +FAIL: gcc.dg/autopar/pr49960.c scan-tree-dump-times optimized "loopfn" 0 +FAIL: gcc.dg/autopar/pr49960.c scan-tree-dump-times parloops "SUCCESS: may be parallelized" 0 +FAIL: gcc.dg/builtin-object-size-8.c execution test +FAIL: gcc.dg/cproj-fails-with-broken-glibc.c execution test +XPASS: gcc.dg/guality/example.c -O2 execution test +XPASS: gcc.dg/guality/example.c -O2 -flto execution test +XPASS: gcc.dg/guality/example.c -O0 execution test +XPASS: gcc.dg/guality/example.c -O2 -flto -flto-partition=none execution test +XPASS: gcc.dg/guality/guality.c -O2 -flto -flto-partition=none execution test +XPASS: gcc.dg/guality/guality.c -O3 -fomit-frame-pointer execution test +XPASS: gcc.dg/guality/guality.c -O0 execution test +XPASS: gcc.dg/guality/guality.c -O3 -g execution test +XPASS: gcc.dg/guality/guality.c -Os execution test +XPASS: gcc.dg/guality/guality.c -O2 -flto execution test +XPASS: gcc.dg/guality/guality.c -O2 execution test +XPASS: gcc.dg/guality/guality.c -O1 execution test +XPASS: gcc.dg/guality/inline-params.c -O2 execution test +XPASS: gcc.dg/guality/inline-params.c -O3 -fomit-frame-pointer execution test +XPASS: gcc.dg/guality/inline-params.c -O2 -flto execution test +XPASS: gcc.dg/guality/inline-params.c -Os execution test +XPASS: gcc.dg/guality/inline-params.c -O3 -g execution test +XPASS: gcc.dg/guality/inline-params.c -O2 -flto -flto-partition=none execution test +XPASS: gcc.dg/guality/pr41353-1.c -O3 -g line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41353-1.c -O1 line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41353-1.c -O2 -flto -flto-partition=none line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41353-1.c -O2 line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41353-1.c -O2 -flto line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41353-1.c -Os line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41353-1.c -O3 -fomit-frame-pointer line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41353-1.c -O0 line 28 j == 28 + 37 +XPASS: gcc.dg/guality/pr41447-1.c -O1 execution test +XPASS: gcc.dg/guality/pr41447-1.c -Os execution test +XPASS: gcc.dg/guality/pr41447-1.c -O2 execution test +XPASS: gcc.dg/guality/pr41447-1.c -O3 -fomit-frame-pointer execution test +XPASS: gcc.dg/guality/pr41447-1.c -O0 execution test +XPASS: gcc.dg/guality/pr41447-1.c -O3 -g execution test +XPASS: gcc.dg/guality/pr41616-1.c -O2 -flto -flto-partition=none execution test +XPASS: gcc.dg/guality/pr41616-1.c -O0 execution test +XPASS: gcc.dg/guality/pr41616-1.c -O3 -fomit-frame-pointer execution test +XPASS: gcc.dg/guality/pr41616-1.c -O3 -g execution test +XPASS: gcc.dg/guality/pr41616-1.c -O1 execution test +XPASS: gcc.dg/guality/pr41616-1.c -Os execution test +XPASS: gcc.dg/guality/pr41616-1.c -O2 execution test +XPASS: gcc.dg/guality/pr41616-1.c -O2 -flto execution test +FAIL: gcc.dg/guality/pr54200.c -Os line 20 z == 3 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -flto-partition=none line 23 y == 117 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto line 20 y == 25 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto line 23 z == 8 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto line 20 z == 6 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -flto-partition=none line 23 z == 8 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto line 23 y == 117 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -flto-partition=none line 20 z == 6 +FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -flto-partition=none line 20 y == 25 +FAIL: gcc.dg/guality/pr54519-2.c -O2 -flto -flto-partition=none line 17 y == 25 +FAIL: gcc.dg/guality/pr54519-2.c -O2 -flto line 17 y == 25 +FAIL: gcc.dg/guality/pr54519-5.c -O2 -flto line 17 y == 25 +FAIL: gcc.dg/guality/pr54519-5.c -O2 -flto -flto-partition=none line 17 y == 25 +FAIL: gcc.dg/guality/pr54519-5.c -Os line 17 y == 25 +FAIL: gcc.dg/guality/pr54519-5.c -O3 -fomit-frame-pointer line 17 y == 25 +FAIL: gcc.dg/guality/pr54519-5.c -O2 line 17 y == 25 +FAIL: gcc.dg/guality/pr54519-5.c -O3 -g line 17 y == 25 +FAIL: gcc.dg/guality/vla-1.c -O2 -flto line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-1.c -O2 -flto line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -O3 -g line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-1.c -O3 -fomit-frame-pointer line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-1.c -O1 line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-1.c -Os line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -O2 -flto -flto-partition=none line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -O2 line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -O3 -fomit-frame-pointer line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -O0 line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-1.c -O2 -flto -flto-partition=none line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-1.c -O2 line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-1.c -O1 line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -O3 -g line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -O0 line 17 sizeof (a) == 6 +FAIL: gcc.dg/guality/vla-1.c -Os line 24 sizeof (a) == 17 * sizeof (short) +FAIL: gcc.dg/guality/vla-2.c -O3 -g line 25 sizeof (a) == 6 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O0 line 25 sizeof (a) == 6 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O0 line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O3 -fomit-frame-pointer line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O2 -flto line 25 sizeof (a) == 6 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -Os line 25 sizeof (a) == 6 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O2 line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O1 line 25 sizeof (a) == 6 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O2 -flto line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O3 -g line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O1 line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O2 line 25 sizeof (a) == 6 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O2 -flto -flto-partition=none line 25 sizeof (a) == 6 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O2 -flto -flto-partition=none line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -Os line 16 sizeof (a) == 5 * sizeof (int) +FAIL: gcc.dg/guality/vla-2.c -O3 -fomit-frame-pointer line 25 sizeof (a) == 6 * sizeof (int) +XPASS: gcc.dg/inline_3.c (test for excess errors) +XPASS: gcc.dg/inline_4.c (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -O2 -flto (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -O1 (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -O3 -g (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -Os (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -O0 (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -O3 -fomit-frame-pointer (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -O2 -flto -flto-partition=none (test for excess errors) +FAIL: gcc.dg/torture/pr51106-2.c -O2 (test for excess errors) +XPASS: gcc.dg/unroll_2.c (test for excess errors) +XPASS: gcc.dg/unroll_3.c (test for excess errors) +XPASS: gcc.dg/unroll_4.c (test for excess errors) +FAIL: libmudflap.c++/pass55-frag.cxx (-O2) execution test +FAIL: libmudflap.c++/pass55-frag.cxx ( -O) execution test +FAIL: libmudflap.c++/pass55-frag.cxx (-O3) execution test +FAIL: libmudflap.c/fail37-frag.c (-O3) output pattern test +FAIL: libmudflap.c/fail37-frag.c (-O2) output pattern test +FAIL: libmudflap.c/fail37-frag.c (-O3) crash test +FAIL: libmudflap.c/fail37-frag.c (-O2) crash test diff --git a/gcc-4.8.3/contrib/texi2pod.pl b/gcc-4.8.3/contrib/texi2pod.pl new file mode 100755 index 000000000..5a4bbacdf --- /dev/null +++ b/gcc-4.8.3/contrib/texi2pod.pl @@ -0,0 +1,500 @@ +#! /usr/bin/perl -w + +# Copyright (C) 1999, 2000, 2001, 2003, 2010 Free Software Foundation, Inc. + +# This file is part of GCC. + +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. + +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston MA 02110-1301, USA. + +# This does trivial (and I mean _trivial_) conversion of Texinfo +# markup to Perl POD format. It's intended to be used to extract +# something suitable for a manpage from a Texinfo document. + +$output = 0; +$skipping = 0; +%sects = (); +$section = ""; +@icstack = (); +@endwstack = (); +@skstack = (); +@instack = (); +$shift = ""; +%defs = (); +$fnno = 1; +$inf = ""; +$ibase = ""; +@ipath = (); + +while ($_ = shift) { + if (/^-D(.*)$/) { + if ($1 ne "") { + $flag = $1; + } else { + $flag = shift; + } + $value = ""; + ($flag, $value) = ($flag =~ /^([^=]+)(?:=(.+))?/); + die "no flag specified for -D\n" + unless $flag ne ""; + die "flags may only contain letters, digits, hyphens, dashes and underscores\n" + unless $flag =~ /^[a-zA-Z0-9_-]+$/; + $defs{$flag} = $value; + } elsif (/^-I(.*)$/) { + if ($1 ne "") { + $flag = $1; + } else { + $flag = shift; + } + push (@ipath, $flag); + } elsif (/^-/) { + usage(); + } else { + $in = $_, next unless defined $in; + $out = $_, next unless defined $out; + usage(); + } +} + +if (defined $in) { + $inf = gensym(); + open($inf, "<$in") or die "opening \"$in\": $!\n"; + $ibase = $1 if $in =~ m|^(.+)/[^/]+$|; +} else { + $inf = \*STDIN; +} + +if (defined $out) { + open(STDOUT, ">$out") or die "opening \"$out\": $!\n"; +} + +while(defined $inf) { +while(<$inf>) { + # Certain commands are discarded without further processing. + /^\@(?: + [a-z]+index # @*index: useful only in complete manual + |need # @need: useful only in printed manual + |(?:end\s+)?group # @group .. @end group: ditto + |page # @page: ditto + |node # @node: useful only in .info file + |(?:end\s+)?ifnottex # @ifnottex .. @end ifnottex: use contents + )\b/x and next; + + chomp; + + # Look for filename and title markers. + /^\@setfilename\s+([^.]+)/ and $fn = $1, next; + /^\@settitle\s+([^.]+)/ and $tl = postprocess($1), next; + + # Identify a man title but keep only the one we are interested in. + /^\@c\s+man\s+title\s+([A-Za-z0-9-]+)\s+(.+)/ and do { + if (exists $defs{$1}) { + $fn = $1; + $tl = postprocess($2); + } + next; + }; + + # Look for blocks surrounded by @c man begin SECTION ... @c man end. + # This really oughta be @ifman ... @end ifman and the like, but such + # would require rev'ing all other Texinfo translators. + /^\@c\s+man\s+begin\s+([A-Z]+)\s+([A-Za-z0-9-]+)/ and do { + $output = 1 if exists $defs{$2}; + $sect = $1; + next; + }; + /^\@c\s+man\s+begin\s+([A-Z]+)/ and $sect = $1, $output = 1, next; + /^\@c\s+man\s+end/ and do { + $sects{$sect} = "" unless exists $sects{$sect}; + $sects{$sect} .= postprocess($section); + $section = ""; + $output = 0; + next; + }; + + # handle variables + /^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and do { + $defs{$1} = $2; + next; + }; + /^\@clear\s+([a-zA-Z0-9_-]+)/ and do { + delete $defs{$1}; + next; + }; + + next unless $output; + + # Discard comments. (Can't do it above, because then we'd never see + # @c man lines.) + /^\@c\b/ and next; + + # End-block handler goes up here because it needs to operate even + # if we are skipping. + /^\@end\s+([a-z]+)/ and do { + # Ignore @end foo, where foo is not an operation which may + # cause us to skip, if we are presently skipping. + my $ended = $1; + next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex|copying)$/; + + die "\@end $ended without \@$ended at line $.\n" unless defined $endw; + die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw; + + $endw = pop @endwstack; + + if ($ended =~ /^(?:ifset|ifclear|ignore|menu|iftex)$/) { + $skipping = pop @skstack; + next; + } elsif ($ended =~ /^(?:example|smallexample|display)$/) { + $shift = ""; + $_ = ""; # need a paragraph break + } elsif ($ended =~ /^(?:itemize|enumerate|[fv]?table)$/) { + $_ = "\n=back\n"; + $ic = pop @icstack; + } elsif ($ended eq "multitable") { + $_ = "\n=back\n"; + } else { + die "unknown command \@end $ended at line $.\n"; + } + }; + + # We must handle commands which can cause skipping even while we + # are skipping, otherwise we will not process nested conditionals + # correctly. + /^\@ifset\s+([a-zA-Z0-9_-]+)/ and do { + push @endwstack, $endw; + push @skstack, $skipping; + $endw = "ifset"; + $skipping = 1 unless exists $defs{$1}; + next; + }; + + /^\@ifclear\s+([a-zA-Z0-9_-]+)/ and do { + push @endwstack, $endw; + push @skstack, $skipping; + $endw = "ifclear"; + $skipping = 1 if exists $defs{$1}; + next; + }; + + /^\@(ignore|menu|iftex|copying)\b/ and do { + push @endwstack, $endw; + push @skstack, $skipping; + $endw = $1; + $skipping = 1; + next; + }; + + next if $skipping; + + # Character entities. First the ones that can be replaced by raw text + # or discarded outright: + s/\@copyright\{\}/(c)/g; + s/\@dots\{\}/.../g; + s/\@enddots\{\}/..../g; + s/\@([.!? ])/$1/g; + s/\@[:-]//g; + s/\@bullet(?:\{\})?/*/g; + s/\@TeX\{\}/TeX/g; + s/\@pounds\{\}/\#/g; + s/\@minus(?:\{\})?/-/g; + s/\\,/,/g; + + # Now the ones that have to be replaced by special escapes + # (which will be turned back into text by unmunge()) + # Replace @@ before @{ and @} in order to parse @samp{@@} correctly. + s/&/&/g; + s/\@\@/&at;/g; + s/\@\{/{/g; + s/\@\}/}/g; + s/\@`\{(.)\}/&$1grave;/g; + + # Inside a verbatim block, handle @var, @samp and @url specially. + if ($shift ne "") { + s/\@var\{([^\}]*)\}/<$1>/g; + s/\@samp\{([^\}]*)\}/"$1"/g; + s/\@url\{([^\}]*)\}/<$1>/g; + } + + # POD doesn't interpret E<> inside a verbatim block. + if ($shift eq "") { + s/</</g; + s/>/>/g; + } else { + s/</</g; + s/>/>/g; + } + + # Single line command handlers. + + /^\@include\s+(.+)$/ and do { + push @instack, $inf; + $inf = gensym(); + $file = postprocess($1); + + # Try cwd and $ibase, then explicit -I paths. + $done = 0; + foreach $path ("", $ibase, @ipath) { + $mypath = $file; + $mypath = $path . "/" . $mypath if ($path ne ""); + open($inf, "<" . $mypath) and ($done = 1, last); + } + die "cannot find $file" if !$done; + next; + }; + + /^\@(?:section|unnumbered|unnumberedsec|center|heading)\s+(.+)$/ + and $_ = "\n=head2 $1\n"; + /^\@subsection\s+(.+)$/ + and $_ = "\n=head3 $1\n"; + /^\@subsubsection\s+(.+)$/ + and $_ = "\n=head4 $1\n"; + + # Block command handlers: + /^\@itemize(?:\s+(\@[a-z]+|\*|-))?/ and do { + push @endwstack, $endw; + push @icstack, $ic; + if (defined $1) { + $ic = $1; + } else { + $ic = '*'; + } + $_ = "\n=over 4\n"; + $endw = "itemize"; + }; + + /^\@enumerate(?:\s+([a-zA-Z0-9]+))?/ and do { + push @endwstack, $endw; + push @icstack, $ic; + if (defined $1) { + $ic = $1 . "."; + } else { + $ic = "1."; + } + $_ = "\n=over 4\n"; + $endw = "enumerate"; + }; + + /^\@multitable\s.*/ and do { + push @endwstack, $endw; + $endw = "multitable"; + $_ = "\n=over 4\n"; + }; + + /^\@([fv]?table)\s+(\@[a-z]+)/ and do { + push @endwstack, $endw; + push @icstack, $ic; + $endw = $1; + $ic = $2; + $ic =~ s/\@(?:samp|strong|key|gcctabopt|env)/B/; + $ic =~ s/\@(?:code|kbd)/C/; + $ic =~ s/\@(?:dfn|var|emph|cite|i)/I/; + $ic =~ s/\@(?:file)/F/; + $ic =~ s/\@(?:asis)//; + $_ = "\n=over 4\n"; + }; + + /^\@((?:small)?example|display)/ and do { + push @endwstack, $endw; + $endw = $1; + $shift = "\t"; + $_ = ""; # need a paragraph break + }; + + /^\@item\s+(.*\S)\s*$/ and $endw eq "multitable" and do { + @columns = (); + for $column (split (/\s*\@tab\s*/, $1)) { + # @strong{...} is used a @headitem work-alike + $column =~ s/^\@strong{(.*)}$/$1/; + push @columns, $column; + } + $_ = "\n=item ".join (" : ", @columns)."\n"; + }; + + /^\@itemx?\s*(.+)?$/ and do { + if (defined $1) { + if ($ic) { + if ($endw eq "enumerate") { + $_ = "\n=item $ic $1\n"; + $ic =~ s/(\d+)/$1 + 1/eg; + } else { + # Entity escapes prevent munging by the <> + # processing below. + $_ = "\n=item $ic\<$1\>\n"; + } + } else { + $_ = "\n=item $1\n"; + } + } else { + $_ = "\n=item $ic\n"; + $ic =~ y/A-Ya-y/B-Zb-z/; + $ic =~ s/(\d+)/$1 + 1/eg; + } + }; + + $section .= $shift.$_."\n"; +} +# End of current file. +close($inf); +$inf = pop @instack; +} + +die "No filename or title\n" unless defined $fn && defined $tl; + +$sects{NAME} = "$fn \- $tl\n"; +$sects{FOOTNOTES} .= "=back\n" if exists $sects{FOOTNOTES}; + +for $sect (qw(NAME SYNOPSIS DESCRIPTION OPTIONS ENVIRONMENT FILES + BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) { + if(exists $sects{$sect}) { + $head = $sect; + $head =~ s/SEEALSO/SEE ALSO/; + print "=head1 $head\n\n"; + print scalar unmunge ($sects{$sect}); + print "\n"; + } +} + +sub usage +{ + die "usage: $0 [-D toggle...] [infile [outfile]]\n"; +} + +sub postprocess +{ + local $_ = $_[0]; + + # @value{foo} is replaced by whatever 'foo' is defined as. + while (m/(\@value\{([a-zA-Z0-9_-]+)\})/g) { + if (! exists $defs{$2}) { + print STDERR "Option $2 not defined\n"; + s/\Q$1\E//; + } else { + $value = $defs{$2}; + s/\Q$1\E/$value/; + } + } + + # Formatting commands. + # Temporary escape for @r. + s/\@r\{([^\}]*)\}/R<$1>/g; + s/\@(?:dfn|var|emph|cite|i)\{([^\}]*)\}/I<$1>/g; + s/\@(?:code|kbd)\{([^\}]*)\}/C<$1>/g; + s/\@(?:samp|strong|key|option|env|command|b)\{([^\}]*)\}/B<$1>/g; + s/\@sc\{([^\}]*)\}/\U$1/g; + s/\@acronym\{([^\}]*)\}/\U$1/g; + s/\@file\{([^\}]*)\}/F<$1>/g; + s/\@w\{([^\}]*)\}/S<$1>/g; + s/\@(?:dmn|math)\{([^\}]*)\}/$1/g; + s/\@\///g; + + # keep references of the form @ref{...}, print them bold + s/\@(?:ref)\{([^\}]*)\}/B<$1>/g; + + # Change double single quotes to double quotes. + s/''/"/g; + s/``/"/g; + + # Cross references are thrown away, as are @noindent and @refill. + # (@noindent is impossible in .pod, and @refill is unnecessary.) + # @* is also impossible in .pod; we discard it and any newline that + # follows it. Similarly, our macro @gol must be discarded. + + s/\(?\@xref\{(?:[^\}]*)\}(?:[^.<]|(?:<[^<>]*>))*\.\)?//g; + s/\s+\(\@pxref\{(?:[^\}]*)\}\)//g; + s/;\s+\@pxref\{(?:[^\}]*)\}//g; + s/\@noindent\s*//g; + s/\@refill//g; + s/\@gol//g; + s/\@\*\s*\n?//g; + + # Anchors are thrown away + s/\@anchor\{(?:[^\}]*)\}//g; + + # @uref can take one, two, or three arguments, with different + # semantics each time. @url and @email are just like @uref with + # one argument, for our purposes. + s/\@(?:uref|url|email)\{([^\},]*)\}/<B<$1>>/g; + s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g; + s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g; + + # Handle gccoptlist here, so it can contain the above formatting + # commands. + s/\@gccoptlist\{([^\}]*)\}/B<$1>/g; + + # Un-escape <> at this point. + s/</</g; + s/>/>/g; + + # Now un-nest all B<>, I<>, R<>. Theoretically we could have + # indefinitely deep nesting; in practice, one level suffices. + 1 while s/([BIR])<([^<>]*)([BIR])<([^<>]*)>/$1<$2>$3<$4>$1</g; + + # Replace R<...> with bare ...; eliminate empty markup, B<>; + # shift white space at the ends of [BI]<...> expressions outside + # the expression. + s/R<([^<>]*)>/$1/g; + s/[BI]<>//g; + s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g; + s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g; + + # Extract footnotes. This has to be done after all other + # processing because otherwise the regexp will choke on formatting + # inside @footnote. + while (/\@footnote/g) { + s/\@footnote\{([^\}]+)\}/[$fnno]/; + add_footnote($1, $fnno); + $fnno++; + } + + return $_; +} + +sub unmunge +{ + # Replace escaped symbols with their equivalents. + local $_ = $_[0]; + + s/&(.)grave;/E<$1grave>/g; + s/</E<lt>/g; + s/>/E<gt>/g; + s/{/\{/g; + s/}/\}/g; + s/&at;/\@/g; + s/&/&/g; + return $_; +} + +sub add_footnote +{ + unless (exists $sects{FOOTNOTES}) { + $sects{FOOTNOTES} = "\n=over 4\n\n"; + } + + $sects{FOOTNOTES} .= "=item $fnno.\n\n"; $fnno++; + $sects{FOOTNOTES} .= $_[0]; + $sects{FOOTNOTES} .= "\n\n"; +} + +# stolen from Symbol.pm +{ + my $genseq = 0; + sub gensym + { + my $name = "GEN" . $genseq++; + my $ref = \*{$name}; + delete $::{$name}; + return $ref; + } +} diff --git a/gcc-4.8.3/contrib/uninclude b/gcc-4.8.3/contrib/uninclude new file mode 100755 index 000000000..8ba28e5cf --- /dev/null +++ b/gcc-4.8.3/contrib/uninclude @@ -0,0 +1,52 @@ +#! /bin/sh + +# (C) 1998, 2007 Free Software Foundation +# Originally by Alexandre Oliva <oliva@lsd.ic.unicamp.br> + +# This gawk/shell script is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 3, or (at your option) +# any later version. + +# Given a preprocessed C/C++ code snippet, this script will replace any +# standard header files with an actual #include <...> directive. + +# Example: +# # 1 "test.c" +# # 1 "/usr/include/stdio.h" 1 3 +# <snip> +# # 1 "test.c" 2 +# +# main() { printf("Hello world!\n"); } + +# is replaced with +# # 1 "test.c" +# #include <stdio.h> +# main() { printf("Hello world!\n"); } + + +# Header files whose pathnames contain any of the following patterns +# are considered as standard headers: usr/include, g++-include, +# include/g++, include/c++/<version>, gcc-lib/<anything>/include. + +gawk ${EXCLUDEPATT+-vexclude="$EXCLUDEPATT"} \ + ${INCLUDEPATT+-vinclude="$INCLUDEPATT"} ' +BEGIN { + skipping = 0; + cppline = "^# [0-9]+ \"[^\"]*/(usr/include|g\\+\\+-include|include/g\\+\\+|include/c\\+\\+/[^/]+|gcc-lib/[^\"]+/include|gcc/include)/([^\"]+)\"( [1-4])*$" +} +!skipping && $0 ~ cppline && +(exclude == "" || $3 !~ exclude) && (include == "" || $3 ~ include) { + skipping = 1; + printf "%s\n", "#include <" gensub(cppline, "\\2", "", $0) ">" + next; +} +skipping && /^# [0-9]+ / && $3 == lastincluded { + skipping = 0; + next; +} +!skipping && /^# [0-9]+ / { + lastincluded = $3; +} +!skipping { print } +' ${1+"$@"} diff --git a/gcc-4.8.3/contrib/update-copyright.py b/gcc-4.8.3/contrib/update-copyright.py new file mode 100644 index 000000000..42d0bfbf2 --- /dev/null +++ b/gcc-4.8.3/contrib/update-copyright.py @@ -0,0 +1,765 @@ +#!/usr/bin/python +# +# Copyright (C) 2013 Free Software Foundation, Inc. +# +# This script is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. + +# This script adjusts the copyright notices at the top of source files +# so that they have the form: +# +# Copyright XXXX-YYYY Free Software Foundation, Inc. +# +# It doesn't change code that is known to be maintained elsewhere or +# that carries a non-FSF copyright. +# +# The script also doesn't change testsuite files, except those in +# libstdc++-v3. This is because libstdc++-v3 has a conformance testsuite, +# while most tests in other directories are just things that failed at some +# point in the past. +# +# Pass --this-year to the script if you want it to add the current year +# to all applicable notices. Pass --quilt if you are using quilt and +# want files to be added to the quilt before being changed. +# +# By default the script will update all directories for which the +# output has been vetted. You can instead pass the names of individual +# directories, including those that haven't been approved. So: +# +# update-copyright.pl --this-year +# +# is the command that would be used at the beginning of a year to update +# all copyright notices (and possibly at other times to check whether +# new files have been added with old years). On the other hand: +# +# update-copyright.pl --this-year libjava +# +# would run the script on just libjava/. +# +# Note that things like --version output strings must be updated before +# this script is run. There's already a separate procedure for that. + +import os +import re +import sys +import time +import subprocess + +class Errors: + def __init__ (self): + self.num_errors = 0 + + def report (self, filename, string): + if filename: + string = filename + ': ' + string + sys.stderr.write (string + '\n') + self.num_errors += 1 + + def ok (self): + return self.num_errors == 0 + +class GenericFilter: + def __init__ (self): + self.skip_files = set() + self.skip_dirs = set() + self.skip_extensions = set() + self.fossilised_files = set() + self.own_files = set() + + self.skip_files |= set ([ + # Skip licence files. + 'COPYING', + 'COPYING.LIB', + 'COPYING3', + 'COPYING3.LIB', + 'LICENSE', + 'fdl.texi', + 'gpl_v3.texi', + 'fdl-1.3.xml', + 'gpl-3.0.xml', + + # Skip auto- and libtool-related files + 'aclocal.m4', + 'compile', + 'config.guess', + 'config.sub', + 'depcomp', + 'install-sh', + 'libtool.m4', + 'ltmain.sh', + 'ltoptions.m4', + 'ltsugar.m4', + 'ltversion.m4', + 'lt~obsolete.m4', + 'missing', + 'mkdep', + 'mkinstalldirs', + 'move-if-change', + 'shlibpath.m4', + 'symlink-tree', + 'ylwrap', + + # Skip FSF mission statement, etc. + 'gnu.texi', + 'funding.texi', + 'appendix_free.xml', + + # Skip imported texinfo files. + 'texinfo.tex', + ]) + + + def get_line_filter (self, dir, filename): + if filename.startswith ('ChangeLog'): + # Ignore references to copyright in changelog entries. + return re.compile ('\t') + + return None + + def skip_file (self, dir, filename): + if filename in self.skip_files: + return True + + (base, extension) = os.path.splitext (os.path.join (dir, filename)) + if extension in self.skip_extensions: + return True + + if extension == '.in': + # Skip .in files produced by automake. + if os.path.exists (base + '.am'): + return True + + # Skip files produced by autogen + if (os.path.exists (base + '.def') + and os.path.exists (base + '.tpl')): + return True + + # Skip configure files produced by autoconf + if filename == 'configure': + if os.path.exists (base + '.ac'): + return True + if os.path.exists (base + '.in'): + return True + + return False + + def skip_dir (self, dir, subdir): + return subdir in self.skip_dirs + + def is_fossilised_file (self, dir, filename): + if filename in self.fossilised_files: + return True + # Only touch current current ChangeLogs. + if filename != 'ChangeLog' and filename.find ('ChangeLog') >= 0: + return True + return False + + def by_package_author (self, dir, filename): + return filename in self.own_files + +class Copyright: + def __init__ (self, errors): + self.errors = errors + + # Characters in a range of years. Include '.' for typos. + ranges = '[0-9](?:[-0-9.,\s]|\s+and\s+)*[0-9]' + + # Non-whitespace characters in a copyright holder's name. + name = '[\w.,-]' + + # Matches one year. + self.year_re = re.compile ('[0-9]+') + + # Matches part of a year or copyright holder. + self.continuation_re = re.compile (ranges + '|' + name) + + # Matches a full copyright notice: + self.copyright_re = re.compile ( + # 1: 'Copyright (C)', etc. + '([Cc]opyright' + '|[Cc]opyright\s+\([Cc]\)' + '|[Cc]opyright\s+%s' + '|[Cc]opyright\s+©' + '|[Cc]opyright\s+@copyright{}' + '|@set\s+copyright[\w-]+)' + + # 2: the years. Include the whitespace in the year, so that + # we can remove any excess. + '(\s*(?:' + ranges + ',?' + '|@value\{[^{}]*\})\s*)' + + # 3: 'by ', if used + '(by\s+)?' + + # 4: the copyright holder. Don't allow multiple consecutive + # spaces, so that right-margin gloss doesn't get caught + # (e.g. gnat_ugn.texi). + '(' + name + '(?:\s?' + name + ')*)?') + + # A regexp for notices that might have slipped by. Just matching + # 'copyright' is too noisy, and 'copyright.*[0-9]' falls foul of + # HTML header markers, so check for 'copyright' and two digits. + self.other_copyright_re = re.compile ('copyright.*[0-9][0-9]', + re.IGNORECASE) + self.comment_re = re.compile('#+|[*]+|;+|%+|//+|@c |dnl ') + self.holders = { '@copying': '@copying' } + self.holder_prefixes = set() + + # True to 'quilt add' files before changing them. + self.use_quilt = False + + # If set, force all notices to include this year. + self.max_year = None + + # Goes after the year(s). Could be ', '. + self.separator = ' ' + + def add_package_author (self, holder, canon_form = None): + if not canon_form: + canon_form = holder + self.holders[holder] = canon_form + index = holder.find (' ') + while index >= 0: + self.holder_prefixes.add (holder[:index]) + index = holder.find (' ', index + 1) + + def add_external_author (self, holder): + self.holders[holder] = None + + class BadYear(): + def __init__ (self, year): + self.year = year + + def __str__ (self): + return 'unrecognised year: ' + self.year + + def parse_year (self, string): + year = int (string) + if len (string) == 2: + if year > 70: + return year + 1900 + elif len (string) == 4: + return year + raise self.BadYear (string) + + def year_range (self, years): + year_list = [self.parse_year (year) + for year in self.year_re.findall (years)] + assert len (year_list) > 0 + return (min (year_list), max (year_list)) + + def set_use_quilt (self, use_quilt): + self.use_quilt = use_quilt + + def include_year (self, year): + assert not self.max_year + self.max_year = year + + def canonicalise_years (self, dir, filename, filter, years): + # Leave texinfo variables alone. + if years.startswith ('@value'): + return years + + (min_year, max_year) = self.year_range (years) + + # Update the upper bound, if enabled. + if self.max_year and not filter.is_fossilised_file (dir, filename): + max_year = max (max_year, self.max_year) + + # Use a range. + if min_year == max_year: + return '%d' % min_year + else: + return '%d-%d' % (min_year, max_year) + + def strip_continuation (self, line): + line = line.lstrip() + match = self.comment_re.match (line) + if match: + line = line[match.end():].lstrip() + return line + + def is_complete (self, match): + holder = match.group (4) + return (holder + and (holder not in self.holder_prefixes + or holder in self.holders)) + + def update_copyright (self, dir, filename, filter, file, line, match): + orig_line = line + next_line = None + pathname = os.path.join (dir, filename) + + intro = match.group (1) + if intro.startswith ('@set'): + # Texinfo year variables should always be on one line + after_years = line[match.end (2):].strip() + if after_years != '': + self.errors.report (pathname, + 'trailing characters in @set: ' + + after_years) + return (False, orig_line, next_line) + else: + # If it looks like the copyright is incomplete, add the next line. + while not self.is_complete (match): + try: + next_line = file.next() + except StopIteration: + break + + # If the next line doesn't look like a proper continuation, + # assume that what we've got is complete. + continuation = self.strip_continuation (next_line) + if not self.continuation_re.match (continuation): + break + + # Merge the lines for matching purposes. + orig_line += next_line + line = line.rstrip() + ' ' + continuation + next_line = None + + # Rematch with the longer line, at the original position. + match = self.copyright_re.match (line, match.start()) + assert match + + holder = match.group (4) + + # Use the filter to test cases where markup is getting in the way. + if filter.by_package_author (dir, filename): + assert holder not in self.holders + + elif not holder: + self.errors.report (pathname, 'missing copyright holder') + return (False, orig_line, next_line) + + elif holder not in self.holders: + self.errors.report (pathname, + 'unrecognised copyright holder: ' + holder) + return (False, orig_line, next_line) + + else: + # See whether the copyright is associated with the package + # author. + canon_form = self.holders[holder] + if not canon_form: + return (False, orig_line, next_line) + + # Make sure the author is given in a consistent way. + line = (line[:match.start (4)] + + canon_form + + line[match.end (4):]) + + # Remove any 'by' + line = line[:match.start (3)] + line[match.end (3):] + + # Update the copyright years. + years = match.group (2).strip() + try: + canon_form = self.canonicalise_years (dir, filename, filter, years) + except self.BadYear as e: + self.errors.report (pathname, str (e)) + return (False, orig_line, next_line) + + line = (line[:match.start (2)] + + ' ' + canon_form + self.separator + + line[match.end (2):]) + + # Use the standard (C) form. + if intro.endswith ('right'): + intro += ' (C)' + elif intro.endswith ('(c)'): + intro = intro[:-3] + '(C)' + line = line[:match.start (1)] + intro + line[match.end (1):] + + # Strip trailing whitespace + line = line.rstrip() + '\n' + + return (line != orig_line, line, next_line) + + def process_file (self, dir, filename, filter): + pathname = os.path.join (dir, filename) + if filename.endswith ('.tmp'): + # Looks like something we tried to create before. + try: + os.remove (pathname) + except OSError: + pass + return + + lines = [] + changed = False + line_filter = filter.get_line_filter (dir, filename) + with open (pathname, 'r') as file: + prev = None + for line in file: + while line: + next_line = None + # Leave filtered-out lines alone. + if not (line_filter and line_filter.match (line)): + match = self.copyright_re.search (line) + if match: + res = self.update_copyright (dir, filename, filter, + file, line, match) + (this_changed, line, next_line) = res + changed = changed or this_changed + + # Check for copyright lines that might have slipped by. + elif self.other_copyright_re.search (line): + self.errors.report (pathname, + 'unrecognised copyright: %s' + % line.strip()) + lines.append (line) + line = next_line + + # If something changed, write the new file out. + if changed and self.errors.ok(): + tmp_pathname = pathname + '.tmp' + with open (tmp_pathname, 'w') as file: + for line in lines: + file.write (line) + if self.use_quilt: + subprocess.call (['quilt', 'add', pathname]) + os.rename (tmp_pathname, pathname) + + def process_tree (self, tree, filter): + for (dir, subdirs, filenames) in os.walk (tree): + # Don't recurse through directories that should be skipped. + for i in xrange (len (subdirs) - 1, -1, -1): + if filter.skip_dir (dir, subdirs[i]): + del subdirs[i] + + # Handle the files in this directory. + for filename in filenames: + if filter.skip_file (dir, filename): + sys.stdout.write ('Skipping %s\n' + % os.path.join (dir, filename)) + else: + self.process_file (dir, filename, filter) + +class CmdLine: + def __init__ (self, copyright = Copyright): + self.errors = Errors() + self.copyright = copyright (self.errors) + self.dirs = [] + self.default_dirs = [] + self.chosen_dirs = [] + self.option_handlers = dict() + self.option_help = [] + + self.add_option ('--help', 'Print this help', self.o_help) + self.add_option ('--quilt', '"quilt add" files before changing them', + self.o_quilt) + self.add_option ('--this-year', 'Add the current year to every notice', + self.o_this_year) + + def add_option (self, name, help, handler): + self.option_help.append ((name, help)) + self.option_handlers[name] = handler + + def add_dir (self, dir, filter = GenericFilter()): + self.dirs.append ((dir, filter)) + + def o_help (self, option = None): + sys.stdout.write ('Usage: %s [options] dir1 dir2...\n\n' + 'Options:\n' % sys.argv[0]) + format = '%-15s %s\n' + for (what, help) in self.option_help: + sys.stdout.write (format % (what, help)) + sys.stdout.write ('\nDirectories:\n') + + format = '%-25s' + i = 0 + for (dir, filter) in self.dirs: + i += 1 + if i % 3 == 0 or i == len (self.dirs): + sys.stdout.write (dir + '\n') + else: + sys.stdout.write (format % dir) + sys.exit (0) + + def o_quilt (self, option): + self.copyright.set_use_quilt (True) + + def o_this_year (self, option): + self.copyright.include_year (time.localtime().tm_year) + + def main (self): + for arg in sys.argv[1:]: + if arg[:1] != '-': + self.chosen_dirs.append (arg) + elif arg in self.option_handlers: + self.option_handlers[arg] (arg) + else: + self.errors.report (None, 'unrecognised option: ' + arg) + if self.errors.ok(): + if len (self.chosen_dirs) == 0: + self.chosen_dirs = self.default_dirs + if len (self.chosen_dirs) == 0: + self.o_help() + else: + for chosen_dir in self.chosen_dirs: + canon_dir = os.path.join (chosen_dir, '') + count = 0 + for (dir, filter) in self.dirs: + if (dir + os.sep).startswith (canon_dir): + count += 1 + self.copyright.process_tree (dir, filter) + if count == 0: + self.errors.report (None, 'unrecognised directory: ' + + chosen_dir) + sys.exit (0 if self.errors.ok() else 1) + +#---------------------------------------------------------------------------- + +class TopLevelFilter (GenericFilter): + def skip_dir (self, dir, subdir): + return True + +class ConfigFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + def skip_file (self, dir, filename): + if filename.endswith ('.m4'): + pathname = os.path.join (dir, filename) + with open (pathname) as file: + # Skip files imported from gettext. + if file.readline().find ('gettext-') >= 0: + return True + return GenericFilter.skip_file (self, dir, filename) + +class GCCFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + self.skip_files |= set ([ + # Not part of GCC + 'math-68881.h', + ]) + + self.skip_dirs |= set ([ + # Better not create a merge nightmare for the GNAT folks. + 'ada', + + # Handled separately. + 'testsuite', + ]) + + self.skip_extensions |= set ([ + # Maintained by the translation project. + '.po', + + # Automatically-generated. + '.pot', + ]) + + self.fossilised_files |= set ([ + # Old news won't be updated. + 'ONEWS', + ]) + +class TestsuiteFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + self.skip_extensions |= set ([ + # Don't change the tests, which could be woend by anyone. + '.c', + '.C', + '.cc', + '.h', + '.hs', + '.f', + '.f90', + '.go', + '.inc', + '.java', + ]) + + def skip_file (self, dir, filename): + # g++.niklas/README contains historical copyright information + # and isn't updated. + if filename == 'README' and os.path.basename (dir) == 'g++.niklas': + return True + return GenericFilter.skip_file (self, dir, filename) + +class LibCppFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + self.skip_extensions |= set ([ + # Maintained by the translation project. + '.po', + + # Automatically-generated. + '.pot', + ]) + +class LibGCCFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + self.skip_dirs |= set ([ + # Imported from GLIBC. + 'soft-fp', + ]) + +class LibJavaFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + self.skip_dirs |= set ([ + # Handled separately. + 'testsuite', + + # Not really part of the library + 'contrib', + + # Imported from upstream + 'classpath', + 'libltdl', + ]) + + def get_line_filter (self, dir, filename): + if filename == 'NameDecoder.h': + return re.compile ('.*NAME_COPYRIGHT') + if filename == 'ICC_Profile.h': + return re.compile ('.*icSigCopyrightTag') + return GenericFilter.get_line_filter (self, dir, filename) + +class LibMudflapFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + self.skip_dirs |= set ([ + # Handled separately. + 'testsuite', + ]) + +class LibStdCxxFilter (GenericFilter): + def __init__ (self): + GenericFilter.__init__ (self) + + self.skip_files |= set ([ + # Contains no copyright of its own, but quotes the GPL. + 'intro.xml', + ]) + + self.skip_dirs |= set ([ + # Contains automatically-generated sources. + 'html', + + # The testsuite data files shouldn't be changed. + 'data', + + # Contains imported images + 'images', + ]) + + self.own_files |= set ([ + # Contains markup around the copyright owner. + 'spine.xml', + ]) + + def get_line_filter (self, dir, filename): + if filename == 'boost_concept_check.h': + return re.compile ('// \(C\) Copyright Jeremy Siek') + return GenericFilter.get_line_filter (self, dir, filename) + +class GCCCopyright (Copyright): + def __init__ (self, errors): + Copyright.__init__ (self, errors) + + canon_fsf = 'Free Software Foundation, Inc.' + self.add_package_author ('Free Software Foundation', canon_fsf) + self.add_package_author ('Free Software Foundation.', canon_fsf) + self.add_package_author ('Free Software Foundation Inc.', canon_fsf) + self.add_package_author ('Free Software Foundation, Inc', canon_fsf) + self.add_package_author ('Free Software Foundation, Inc.', canon_fsf) + self.add_package_author ('The Free Software Foundation', canon_fsf) + self.add_package_author ('The Free Software Foundation, Inc.', canon_fsf) + self.add_package_author ('Software Foundation, Inc.', canon_fsf) + + self.add_external_author ('ARM') + self.add_external_author ('AdaCore') + self.add_external_author ('Ami Tavory and Vladimir Dreizin, IBM-HRL.') + self.add_external_author ('Cavium Networks.') + self.add_external_author ('Faraday Technology Corp.') + self.add_external_author ('Florida State University') + self.add_external_author ('Greg Colvin and Beman Dawes.') + self.add_external_author ('Hewlett-Packard Company') + self.add_external_author ('Information Technology Industry Council.') + self.add_external_author ('James Theiler, Brian Gough') + self.add_external_author ('Makoto Matsumoto and Takuji Nishimura,') + self.add_external_author ('National Research Council of Canada.') + self.add_external_author ('Peter Dimov and Multi Media Ltd.') + self.add_external_author ('Peter Dimov') + self.add_external_author ('Pipeline Associates, Inc.') + self.add_external_author ('Regents of the University of California.') + self.add_external_author ('Silicon Graphics Computer Systems, Inc.') + self.add_external_author ('Silicon Graphics') + self.add_external_author ('Stephen L. Moshier') + self.add_external_author ('Sun Microsystems, Inc. All rights reserved.') + self.add_external_author ('The Go Authors. All rights reserved.') + self.add_external_author ('The Go Authors. All rights reserved.') + self.add_external_author ('The Go Authors.') + self.add_external_author ('The Regents of the University of California.') + self.add_external_author ('Unicode, Inc.') + self.add_external_author ('University of Toronto.') + +class GCCCmdLine (CmdLine): + def __init__ (self): + CmdLine.__init__ (self, GCCCopyright) + + self.add_dir ('.', TopLevelFilter()) + # boehm-gc is imported from upstream. + self.add_dir ('config', ConfigFilter()) + # contrib isn't really part of GCC. + self.add_dir ('fixincludes') + self.add_dir ('gcc', GCCFilter()) + self.add_dir (os.path.join ('gcc', 'testsuite'), TestsuiteFilter()) + self.add_dir ('gnattools') + self.add_dir ('include') + self.add_dir ('libada') + self.add_dir ('libatomic') + self.add_dir ('libbacktrace') + self.add_dir ('libcpp', LibCppFilter()) + self.add_dir ('libdecnumber') + # libffi is imported from upstream. + self.add_dir ('libgcc', LibGCCFilter()) + self.add_dir ('libgfortran') + self.add_dir ('libgomp') + self.add_dir ('libiberty') + self.add_dir ('libitm') + self.add_dir ('libjava', LibJavaFilter()) + self.add_dir (os.path.join ('libjava', 'testsuite'), TestsuiteFilter()) + self.add_dir ('libmudflap', LibMudflapFilter()) + self.add_dir (os.path.join ('libmudflap', 'testsuite'), + TestsuiteFilter()) + self.add_dir ('libobjc') + self.add_dir ('libquadmath') + # libsanitiser is imported from upstream. + self.add_dir ('libssp') + self.add_dir ('libstdc++-v3', LibStdCxxFilter()) + self.add_dir ('lto-plugin') + # zlib is imported from upstream. + + self.default_dirs = [ + 'gcc', + 'libada', + 'libatomic', + 'libbacktrace', + 'libcpp', + 'libdecnumber', + 'libgcc', + 'libgfortran', + 'libgomp', + 'libitm', + 'libmudflap', + 'libobjc', + 'libstdc++-v3', + ] + +GCCCmdLine().main() diff --git a/gcc-4.8.3/contrib/warn_summary b/gcc-4.8.3/contrib/warn_summary new file mode 100755 index 000000000..38e2c01ef --- /dev/null +++ b/gcc-4.8.3/contrib/warn_summary @@ -0,0 +1,214 @@ +#!/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%^[^ ]*/\(fixincludes/\)%\1%; +s%^[^ ]*/\(sim/\)%\1%; +s%^[^ ]*/\(newlib/\)%\1%; +s%^[^ ]*/\(mpfr/\)%\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 |