Sun Oct 24 23:54:10 PDT 1999 Jeff Law  (law@cygnus.com)

	* gcc-2.95.2 Released.

Mon Aug 16 01:29:24 PDT 1999 Jeff Law  (law@cygnus.com)

	* gcc-2.95.1 Released.

Wed Jul 28 21:39:31 PDT 1999 Jeff Law  (law@cygnus.com)

	* gcc-2.95 Released.

Sun Jul 25 23:40:51 PDT 1999 Jeff Law  (law@cygnus.com)

	* gcc-2.95 Released.

Sun Jul 25 21:41:37 1999  Jeffrey A Law  (law@cygnus.com)

        * README: More listname related changes.

1999-06-05  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/19990502-0.f: Replace with new,
	shorter, test that still fails after recent changes.

Wed May 19 02:56:18 1999  Raja R Harinath <harinath@cs.umn.edu>

	* gcc.c-torture/compile/990519-1.c: New test.

1999-05-17  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* gcc.c-torture/compile/990517-1.c: New test.

	* gcc.c-torture/execute/990326-1.c: Force bitfields to be aligned.
	(e4, f4): New tests.
	(main): Call them.

1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.dg/noreturn-1.c: New test.

Thu May 13 02:02:46 1999  Andreas Schwab <schwab@issan.cs.uni-dortmund.de>

	* gcc.c-torture/execute/990513-1.c: New test.

1999-05-10  Richard Henderson  <rth@cygnus.com>

	* g++.old-deja/g++.other/null1.C (g): Add overload for long.

1999-05-10  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/erfc.f: Use small single-precision
	values, to avoid problems on Alphas when not -mieee.

1999-05-08  Craig Burley  <craig@jcb-sc.com>

	* gcc.dg/990506-0.c: New test.

1999-05-08  Richard Henderson  <rth@cygnus.com>

	* g++.old-deja/g++.benjamin/p12475.C: Use LONG_MAX to find
	the constant to test.  Don't XFAIL 64-bit targets.

	* g++.old-deja/g++.jason/thunk3.C: Don't XFAIL Alpha.
	* g++.old-deja/g++.law/profile1.C: Likewise.

	* g++.old-deja/g++.other/delete4.C: Define size_t; use it in all
	operator new instances.
	* g++.old-deja/g++.other/delete5.C: Likewise.

1999-05-03  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f (main): Declare ABORT as
	intrinsic.

1999-05-03  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f: Reverse order of two
	arguments to CTIME_subr, DTIME_subr, ETIME_subr, and TTYNAM_subr.

1999-05-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.dg/compare1.c: New test.

1999-05-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.dg/cast-qual-1.c, gcc.dg/return-type-1.c, gcc.dg/unused-1.c:
	New tests.

1999-05-02  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/19990502-1.f: New test.

1999-05-02  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/19990502-0.f: New test.

Sun May  2 01:38:50 1999  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f (main): Declare FTELL as
	intrinsic.

Sun May  2 01:13:37 1999  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f (main): List libU77
	intrinsics not currently tested.
	Add tests for TIME8, CTIME_subr, IARGC, TTYNAM_subr,
	GETENV, FDATE_subr, DTIME_subr, ETIME_subr, DATE, ITIME,
	FTELL_subr, MCLOCK, MCLOCK8, and CPU_TIME.
	Trim blanks off the ends of some printed strings.

Sun May  2 00:06:45 1999  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f (main): Just warn about
	FSTAT gid disagreement, as it's expected on some systems.

Sat May  1 23:57:18 1999  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f: Generalize sum-checking to
	use a new function, which allows for some slop.
	Clean up some commentary.
	(issum): The new function.
	(sgladd): Deleted subroutine.

1999-05-01  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f: Modify to be more like
	libf2c/libU77 version, bringing patches to that version here.
	Add suitable commentary.

Sun Apr 25 12:28:59 1999  Richard Henderson  <rth@cygnus.com>

	* gcc.dg/990424-1.c: New test.

1999-04-24  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/u77-test.f (main): Bug involving
	LSTAT has been fixed, so turn back on full checking.

1999-04-20  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/19990419-0.f: New test.
	* g77.f-torture/execute/19990419-1.f: New test.

Sat Apr 17 16:56:48 1999  Richard Henderson  <rth@cygnus.com>

	* gcc.dg/uninit-9.c (func): Use __builtin_alloca instead of alloca
	to avoid the need for a prototype to supress a warning.

Sun Apr  4 04:02:53 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/990404-1.c: New test.

1999-04-03 10:35 -0500  Zack Weinberg  <zack@rabi.columbia.edu>

	* gcc.dg/cpp-if1.c: Adjust regexps to accommodate cccp.
	* gcc.dg/cpp-if3.c: Don't use -pedantic.
	* gcc.misc-tests/m-un-2.c: Adjust regexps for new format of
	missing initializer warnings.

Sun Mar 28 00:49:41 1999  Jeffrey A Law  (law@cygnus.com)

	* lib/objc-torture.exp: Replace "77" with "Obj-C" in pattern
	matching strings.

Fri Mar 26 00:50:46 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/990326-1.c: New test from Charles Hannum.

1999-03-26  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/19990325-0.f: New test.
	* g77.f-torture/execute/19990325-1.f: New test.

Wed Mar 24 22:50:50 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/990324-1.c: New test.

1999-03-13  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/19990313-2.f: New test.
	* g77.f-torture/execute/19990313-3.f: New test.

1999-03-13  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/19990313-0.f: New test.
	* g77.f-torture/execute/19990313-1.f: New test.

1999-03-08  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/19981119-0.f: Improve testiness.

1999-03-08  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/19990305-0.f: New test.
	* g77.f-torture/execute/19981119-0.f: New test.

1999-03-08  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/970625-2.f: call ABORT if final
	result is not correct, instead of just printing it.
	Add this checking via newly introduced obfuscation, to
	trip up buggy front ends.

1999-03-07  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/960317-1.f: Moved from being
	in execute/.  (Somehow I didn't notice "SUBROUTINE...".)

1999-03-06  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/execute/960317-1.f: New (old) test.
	* g77.f-torture/execute/970625-2.f: Ditto.

Mon Mar  1 23:29:14 1999  Jeffrey A Law  (law@cygnus.com)

	* g++.old-deja/g++.law/weak1.C: New test.

1999-02-28 17:59 -0500  Zack Weinberg  <zack@rabi.columbia.edu>

	* gcc.c-torture/execute/990119-1.c: Renamed to...
	* gcc.dg/990119-1.c: this, so it will only be tested once
	(it's a preprocessor test, it doesn't need to be run at
	multiple optimization levels).

1999-02-27 13:34 -0500  Zack Weinberg  <zack@rabi.columbia.edu>

	* lib/g++.exp: Don't add incdir=$base_dir/../include to
        ALWAYS_CXXFLAGS.

1999-02-24  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/noncompile/19981216-0.f: Renamed from...
	* g77.f-torture/compile/19981216-0.f: ...as it is expected
	to not be compilable by current g77.

1999-02-24  Nick Clifton  <nickc@cygnus.com>

	* lib/c-torture.exp: Add -O3 to TORTURE_OPTIONS list.

Mon Feb 22 01:15:08 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/990222-1.c: New test.

1999-02-19  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/19990218-0.f: New test.
	* g77.f-torture/noncompile/19990218-1.f: New test.

1999-02-18  Craig Burley  <craig@jcb-sc.com>

	* g77.f-torture/compile/19981216-0.f: New test.

Sun Feb 14 01:26:29 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/990214-1.c: New test.

Sat Feb 13 00:43:52 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/990213-2.c: New test.

	* gcc.dg/990213-1.c: New test.

Fri Feb 12 11:04:35 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/990106-2.c: Update to work on targets with 16bit
	ints.

1999-02-11  Nick Clifton  <nickc@cygnus.com>

	* lib/gcc.exp (proc gcc_target_compile): Add support for timeout
	specified by target.

	* lib/chill.exp: Fix typo: doesn'timeout -> doesn't

Thu Feb 11 01:12:12 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/990211-1.c: New test from Nathan SIdwell.

Wed Feb 10 13:08:12 1999  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* gcc.dg/special/ecos.exp: New test driver for new tests with
	special requirements.

	* gcc.dg/special/alias-1.c: New test.
	* gcc.dg/special/gcsec-1.c: New test.
	* gcc.dg/special/weak-1.c: New test.
	* gcc.dg/special/weak-1a.c: Accompanying file to weak-1.c.
	* gcc.dg/special/weak-2.c: New test.
	* gcc.dg/special/weak-2a.c: Accompanying file to weak-2.c.
	* gcc.dg/special/weak-2b.c: Accompanying file to weak-2.c.
	* gcc.dg/special/wkali-1.c: New test.
	* gcc.dg/special/wkali-2.c: New test.
	* gcc.dg/special/wkali-2a.c: Accompanying file to wkali-2.c.
	* gcc.dg/special/wkali-2b.c: Accompanying file to wkali-2.c.

Wed Feb 10 12:15:35 1999  Felix Lee  <flee@cygnus.com>

        * lib/c-torture.exp (c-torture-compile): Pull out code for
        analyzing gcc error messages.
        (c-torture-execute): Likewise.  Fix some (harmless) false
        positives.
        * lib/gcc.exp (gcc_check_compile): New function.

Mon Feb  8 21:42:57 1999  Richard Henderson  <rth@cygnus.com>

	* gcc.c-torture/execute/990208-1.c: New test.

1999-02-07  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* g++.dg/special/ecos.exp: New driver for new tests with special
	requirements
	
	* g++.dg/special/conpr-1.C: New test
	* g++.dg/special/conpr-2.C: New test
	* g++.dg/special/conpr-2a.C: New test
	* g++.dg/special/conpr-3.C: New test
	* g++.dg/special/conpr-3a.C: New test
	* g++.dg/special/conpr-3b.C: New test
	
	* lib/g++-dg.exp: New driver file, based on lib/gcc-dg.exp to
	allow g++ to use the dg driver

	* README: Add comment about g++.dg directory

Sat Feb  6 18:00:38 1999  Jeffrey A Law  (law@cygnus.com)

	* README: Update email addresses.

Sat Jan 30 16:22:47 1999  Richard Henderson  <rth@cygnus.com>

	* gcc.c-torture/execute/990130-1.c: New test.

Sat Jan 30 11:10:06 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/990130-1.c: New test.

1999-01-27  Felix Lee  <flee@cygnus.com>

	* lib/c-torture.exp (c-torture-compile): pull out code for
	analyzing gcc error messages.
	(c-torture-execute): ditto, and fix some (harmless) false
	positives.
	* lib/gcc.exp (gcc_check_compile): new function.

Sun Jan 17 00:02:33 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/990117-1.c: New test.

	* gcc.c-torture/compile/990117-1.c: New test from Horst von Brand.

	* gcc.c-torture/execute/990117-1.c: New test from HJ Lu.

Fri Jan 15 02:52:00 1999  Jeffrey A Law  (law@cygnus.com)

	* g77.f-torture/compile/990115-1.f: New test.

Thu Jan  7 23:39:47 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/990107-1.c: New test

Wed Jan  6 02:21:59 1999  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/990106-2.c: New test.

	* gcc.c-torture/execute/990106-1.c: New test.

Wed Dec 30 23:05:28 1998  Zack Weinberg <zack@rabi.columbia.edu>

	* gcc.c-torture/compile/981223-1.c: New test.

Tue Dec 29 11:33:25 1998  Richard Henderson  <rth@cygnus.com>

	* gcc.c-torture/execute/bcp-1.c (bad10): Rename from opt3.
	(opt3): Rename from opt4 and disable.

1998-12-20  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/ptrmem5.C: New test.

1998-12-15  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/conv5.C: New test.

Fri Dec 11 10:25:57 1998  Jeffrey A Law  (law@cygnus.com)

	* g++.old-deja/g++.benjamin/p12475.C: Expect failure on mips64 targets.

Fri Dec 11 01:12:45 1998  Zack Weinberg <zack@rabi.columbia.edu>

	* gcc.c-torture/compile/981211-1.c: New test.

1998-12-09  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* gcc.dg/ultrasp1.c: Empty dg-options, avoid `long long' warnings.

	* g++.old-deja/g++.pt/instantiate6.C: Linker error, not	crash.

Tue Dec  8 22:50:04 1998  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* gcc.special/930510-1.c: Make C9X safe.
	* gcc.misc-tests/gcov-1.c Similarly.
	* gcc.misc-tests/gcov-2.c Similarly.

1998-12-06  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* gcc.dg/ultrasp1.c: New test.

Sun Dec  6 00:40:12 1998  Richard Henderson  <rth@cygnus.com>

	* gcc.c-torture/execute/981206.c: New test.

1998-12-06  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.ns/template7.C: New test.

	* g++.old-deja/g++.other/expr1.C: New test.

	* g++.old-deja/g++.eh/tmpl3.C: New test.

	* g++.old-deja/g++.eh/tmpl2.C: New test.

1998-12-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/using5.C: Usified using[567].C here.
	* g++.old-deja/g++.other/using6.C: Removed.
	* g++.old-deja/g++.other/using7.C: Mark Mitchel removed it.

	* g++.old-deja/g++.pt/spec20.C: Re-insert non-bogus ERROR marks.

1998-12-03  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/overload8.C: New test.

	* g++.old-deja/g++.pt/overload7.C: New test.

	* g++.old-deja/g++.pt/spec20.C: ERROR marks were bogus.

	* lib/old-dejagnu.exp (old-dejagnu): Ignore collect recompiling
	and relinking messages.
	* lib/g++.exp (g++_target_compile): Remove .rpo file when
	compiling with -frepo.

1998-12-01  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/lookup6.C: New test.

1998-11-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/explicit76.C: New test.

	* g++.old-deja/g++.pt/friend38.C: New test.

	* g++.old-deja/g++.ns/crash2.C: New test.

	* g++.old-deja/g++.pt/defarg8.C: New test.

	* g++.old-deja/g++.pt/instantiate6.C: New test.

	* g++.old-deja/g++.pt/static6.C: New test.

	* g++.old-deja/g++.pt/decl2.C: New test.

1998-11-26  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/lookup5.C: New test.  Not sure the
	problem is actually related with name lookup, but so what? :-)

	* g++.old-deja/g++.pt/friend37.C: New test.

1998-11-25  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/u77-test.f (main): Avoid testing [f]statb
	element, which fails on some systems.

	* g77.f-torture/execute/labug1.f: New test.

Sat Nov 21 21:41:05 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980526-1.c: Do nothing if NO_LABEL_VALUES
	is defined.

1998-11-18  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/compile/981117-1.f: New test.

1998-11-16  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.eh/throw2.C: New test.  CV-qualifiers are not
 	properly discarded.

1998-11-07  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README: New file, general information about the testsuite and 
	new description of the various C++ test subdirectories.
	* README.g++: Eliminate obsolete information, update and move most
	relevant stuff to README.

Sat Nov  7 02:55:55 1998  Richard Henderson  <rth@cygnus.com>

	* gcc.c-torture/compile/981107-1.c: New test.

Mon Nov  2 11:16:03 1998  Doug Evans  <devans@canuck.cygnus.com>

	* execute/memcpy-bi.c: New testcase.

1998-10-31  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/sizeof3.C: A similar testcase not involving
	base classes.

	* g++.old-deja/g++.pt/sizeof2.C: Incorrect specialization of base
	template is selected.

	* g++.old-deja/g++.ext/arrnew2.C: If new T[n](i) is accepted for
	classes, it should be accepted for all types.

	* g++.old-deja/g++.eh/sjlj1.C: Test checked sjlj-exception.

	* g++.old-deja/g++.pt/spec24.C: Ensure that template
	specializations start with template headers.

1998-10-29  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/dcast2.C: Cannot dynamic downcast &x.

	* g++.old-deja/g++.other/init9.C: Test cross initialization of
	non-POD types.

1998-10-27  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* lib/old-dejagnu.exp (old-dejagnu): Document `Additional sources'.

Thu Oct 22 16:01:44 1998  Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>

	* compile/981022-1.c, compile/981022-1.x: New test and driver.

Mon Oct 19 14:03:07 1998  Jeffrey A Law  (law@cygnus.com)

	* 981019-1.c: New test.

Wed Oct 14 21:11:19 1998  Robert Lipe <robertl@dgii.com>

	* lib/objc-torture.exp (objc-torture-execute): Add -I so we can
 	find objc headers.

1998-10-14  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* compile/981001-4.c: Remove use of GCC extension that triggers a
	compiler bug.

1998-10-13  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* lib/old-dejagnu.exp (old-dejagnu): Support `Additional sources:'.

1998-10-12  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/explicit74.C: New test.  Explicit
 	instantiation of template produces incorrect code for delete
 	expression.

	* g++.old-deja/g++.pt/instantiate5.C: New test.  `global
	constructors' name is not unique.
	* g++.old-deja/g++.pt/instantiate5.cc: Ditto.
	* g++.old-deja/g++.pt/instantiate5-main.cc: Ditto.

	* g++.old-deja/g++.other/init8.C: New test.  Uninitialized
 	automatic array of const is ill-formed.

	* g++.old-deja/g++.pt/ttp53.C: New test.  Incorrect substitution
	of template parameter?

	* g++.old-deja/g++.other/conv3.C: New test.  Conversion discards
	const.

	* g++.old-deja/g++.other/pmf2.C: New test.  Invalid
	pointer-to-member expression.

	* g++.old-deja/g++.other/friend5.C: New test.  Bogus friend
	declaration causes ICE.

1998-10-11  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.ns/main1.C: New test.  main() should only be
 	reserved in the global namespace.

	* g++.old-deja/g++.pt/instantiate4.C: New test: -frepo does not
	generate needed virtual table.

	* lib/old-dejagnu.exp (old-dejagnu): Support `Build then link:'.

1998-10-10  Dariush Eslimi  <eslimi@loran.com>

	* g++.old-deja/g++.ext/typeof1.C: New test; typeof based on
	template-dependent type

1998-10-10  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.brendan/parse3.C: XFAILs, not ERRORs.
	* g++.old-deja/g++.brendan/parse5.C: XFAILs, not ERRORs.
	* g++.old-deja/g++.brendan/parse6.C: XFAILs, not ERRORs.

	* g++.old-deja/g++.other/using5.C: New test; using decl from base
 	class should be usable as argument of member function.
	* g++.old-deja/g++.other/using6.C: New test; using decl from base
 	class should be usable as return type of member function.
	* g++.old-deja/g++.other/using7.C: New test; using decl from base
 	class should be usable as type of data member.

	* g++.old-deja/g++.ns/extern1.C: Fix XFAIL mark.

Fri Oct  9 19:19:19 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/special/920521-1.c: Fix bogus test.

Thu Oct  8 19:14:05 1998  Nick Clifton  <nickc@cygnus.com>

	* gcc.dg/dll-?.c Add thumb to target list.
	Fix assembler scan patterns to match current assembler output.

1998-10-08  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/expr6.C: New test.  operator?: breaks
	matching of template brackets.

	* g++.old-deja/g++.other/using4.C: New test.  Test using
 	declarations of methods from base classes.

	* g++.old-deja/g++.ns/extern1.C: New test.  Extern declarations
 	within functions should introduce names into the innermost
 	enclosing namespace.

	* g++.old-deja/g++.other/init7.C: New test.  Retry initialization
 	of static locals if first initialization throws.

Wed Oct  7 12:00:20 1998  Jim Wilson  <wilson@cygnus.com>

	* gcc.c-torture/compile/981007-1.c: New test for irix6 -O0 core dump.

1998-10-06  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/friend35.C: New test.  A template function
 	must be declared before its specializations can be named in friend
 	declarations.

1998-10-05  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/u77-test.f: Add regression test for RAND.

	* g77.f-torture/execute/io1.f: New test.

1998-10-04  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/overload5.C: New test; initialize variable
 	with pointer to template function, for which no argument deduction
 	is possible.

	* g++.old-deja/g++.pt/overload4.C: New test; passing pointer to
	specialization of template function as argument to template
	function.

	* g++.old-deja/g++.other/access2.C: New test; Inner class
	shouldn't have privileged access to Outer's names.

1998-10-03  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/friend34.C: New test; name injection of
	friend template declared within template class conflicts with
	nested class of the same name.

	* g++.old-deja/g++.other/badopt1.C: New test; post-increment
 	is ignored.

	* g++.old-deja/g++.other/decl1.C: New test; incorrect parsing of
	object with direct initializer as function declaration.

	* g++.old-deja/g++.other/decl2.C: New test; duplicate
	initializers.

	* g++.old-deja/g++.other/null2.C: New test; conditional operator
 	involving const pointer and NULL produces incorrect result.

	* g++.old-deja/g++.other/typename1.C: New test; template-dependent
 	type name without `typename' should be rejected with -pedantic.

Fri Oct  2 21:55:58 1998  Richard Henderson  <rth@cygnus.com>

	* g++.old-deja/g++.other/addrof1.C: New test.

Thu Oct  1 19:05:20 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/981001-2.c: New test.
	* gcc.c-torture/compile/981001-3.c: New test.
	* gcc.c-torture/compile/981001-4.c: New test.

1998-10-01  Robert Lipe  <robertl@dgii.com>

	* lib/objc.exp (objc_target_compile): Add -L during compiles for
	multilibbed hosts.   Idea grafted from g77.exp.

1998-09-30  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/u77-test.f (main): Excise `hostnm' to
	avoid losing on systems which need -lsocket.

1998-09-28  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/bitfld1.C: Expected failure.
	* g++.old-deja/g++.other/nested2.C: Ditto.
	* g++.old-deja/g++.robertl/eb132.C: No longer an expected
	failure.

1998-09-26  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/bitfld1.C: Built-in operator!= should be
	preferred over template operator!= for enum bitfields.

1998-09-18  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/nested2.C: Different virtual base classes
 	that happen to have the same base name, but in different scopes,
 	are incorrectly rejected.

1998-09-16  Richard Henderson  <rth@cygnus.com>

	* g++.old-deja/g++.brendan/array1.C: Size array via arithmetic based
	on the native word size instead of an integer literal.

1998-09-15  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/static2.C: Invocation of static data
 	member of type pointer-to-function denoted as non-static member.

	* g++.old-deja/g++.other/typedef5.C: Add some more tests involving 
	checks involving function types and aliases.

1998-09-12  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/typedef5.C: Check whether typedefs can be
 	redefined to the same non-trivial type.

	* g++.old-deja/g++.pt/explicit73.C: Test for proper
 	namespace-qualification of template specializations declared in
 	other namespaces.

	* g++.old-deja/g++.other/friend4.C: Check whether it is possible
	to declare a subset of the specializations of a template function
	as friends of specializations of a template class.

	* g++.old-deja/g++.pt/explicit71.C: Make sure specializations of
 	member templates that do not fully specialize the enclosing
 	template class are rejected.

1998-09-11  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/u77-test.f: Fix bad consistency checks.

1998-09-08  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/u77-test.f (main): New file, somewhat
	altered from libf2c/libU77 version.

1998-09-06  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/io0.f: Test formatted direct i/o too.

1998-09-04  Reid M. Pinchback  <reidmp@MIT.EDU>, Alexandre Oliva  <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.pt/explicit72.C: Ensure that char and
	(un)signed char are different types for template specialization
	purposes.

Thu Sep  3 00:40:32 1998  Ovidiu Predescu  <ovidiu@aracnet.com>

	* lib/{objc.exp,objc-torture.exp}: New files for objc testing harness.
	* objc: ObjC testsuite.

Mon Aug 31 15:19:32 1998  Nick Clifton  <nickc@cygnus.com>

	* lib/c-torture.exp: Add support for
	torture_eval_before_compile and torture_eval_before_execute
	variables.

Sun Aug 30 17:38:20 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/980626-1.c: Delete this test.  We've declared the warning
	this test triggers valid.

Thu Aug 27 23:59:18 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/980827-1.c: New test.

Wed Aug 26 16:25:38 1998  Nick Clifton  <nickc@cygnus.com>

	* lib/c-torture.exp: Add support for
	torture_eval_before_compile and torture_eval_before_execute
	variables.

Tue Aug 25 19:42:13 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/980825-1.c: New test.

Mon Aug 24 16:38:52 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/930326-1.x: Fix typo.

1998-08-23  Mark Mitchell  <mark@markmitchell.com>

	* lib/old-dejagnu.exp: Make it possible to XFAIL a test that
	causes an ICE.

Fri Aug 21 23:59:18 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/unsorted/memtst.c: Reduce size of array when
	STACK_SIZE is defined.
	* gcc.c-torture/unsorted/stuct.c: Similarly.

	* gcc.c-torture/compile/980821-1.c: New test.

Fri Aug 21 03:14:04 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980526-2.c: Disable for targets with 16bit ints.

1998-08-19  Mark Mitchell  <mark@markmitchell.com>

	* lib/old-dejagnu.exp (old-dejagnu): Remove sig6/sig11 handling
	code. 

1998-08-09  Mark Mitchell  <mark@markmitchell.com>

	* lib/old-dejagnu.exp: Revise handling of `Internal compiler
	error'.

Tue Aug 18 19:19:50 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/*.x: Some updates for the h8300 targets.

Sun Aug 16 01:29:19 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/980816-1.c: New test.

	* gcc.dg/980816-1.c: New test.

1998-08-01  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/compile/980729-0.f: New test.

1998-07-30  Ken Raeburn  <raeburn@cygnus.com>

	* gcc.c-torture/special/eeprof-1.c: New test, for
	-finstrument-functions.
	* gcc.c-torture/special/special.exp: Run it.

Wed Jul 29 00:17:18 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/980729-1.c: New test.

1998-07-26  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/noncompile/980615-0.f: New test.

Sun Jul 26 01:15:56 1998  H.J. Lu  (hjl@gnu.org)

	* gcc.dg/980312-1.c: Do link instead of compile.
	* gcc.dg/980313-1.c: Likewise.

Sun Jul 26 01:05:02 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/980726-1.c: New test.

1998-07-25  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/io0.f: New test.

Fri Jul 17 14:19:32 1998  Nick Clifton  <nickc@cygnus.com>

	* gcc.dg/980626-1.c: Expect failures for all toolchains until
	c-decl.c:grokdeclarator can handle mode attributes.

Thu Jul 16 21:42:50 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980716-1.c: New test.

Mon Jul 13 22:26:37 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/920715-1.x: No longer expected to fail on
	the mn10200.
	* gcc.c-torture/execute/strct-varg-1.x: New file.  Expect failure on
	the mn10200.
	* gcc.c-torture/execute/va-arg-3.x: Similarly.
	* gcc.c-torture/compile/930326-1.x: Similarly.

1998-07-13  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/auto0.f, g77.f-torture/execute/auto1.f:
	New test from Craig.

1998-07-12  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/noncompile/980616-0.f: New test.

	* g77.f-torture/execute/970816-3.f:  New test from Craig.

Fri Jul 10 23:43:33 1998 Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>
	
	*  g++.other/singleton.C: Return error value instead of taking
	SIGSEGV.

Fri Jul 10 10:02:03 1998  Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 

	*  g++.other/singleton.C: New test.   Warning is under dispute.
	Runtime crash is not.

Thu Jul  9 23:07:45 1998  Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>

	* g++.ns/{alias2.C, alias5.C, koenig4.C, lookup3.C ns13.C, 
	ns14.C, ns15.C, template3.C, undef1.C, using4.C, using5.C, 
	using6.C, using7.C}:  New namespace tests.

Thu Jul  9 22:44:49 1998  Alexandre Oliva   <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/partspec1.C: Test matching of partial
	specialization with typedef'ed names used as array indexes.

Thu Jul  9 00:38:51 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980709-1.c: New test.

	* gcc.dg/980709-1.c: New test.

Tue Jul  7 13:41:27 1998  Richard Henderson  <rth@cygnus.com>

	* gcc.c-torture/execute/bcp-1.c: New test.

Tue Jul  7 11:49:04 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980707-1.c: New test.

Mon Jul  6 18:20:27 1998  Kamil Iskra  <iskra@student.uci.agh.edu.pl>

	* gcc.c-torture/compile/980706-1.c: New test.

1998-07-01  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/980701-0.f,
	g77.f-torture/execute/980701-1.f: New test from Craig.

Wed Jul  1 00:52:51 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/compile/980701-1.c: New test.

	* gcc.c-torture/execute/980701-1.c: New test.

Tue Jun 30 11:51:42 1998  Klaus-Georg Adams  <Klaus-Georg.Adams@chemie.uni-ka
rlsruhe.de>

	* g++.old-deja/g++.robertl/eb132.C: New test.
	* g++.old-deja/g++.robertl/eb133.C: Likewise.

1998-06-29  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/980628-7.f,
	g77.f-torture/execute/980628-8.f,
	g77.f-torture/execute/980628-9.f,
	g77.f-torture/execute/980628-10.f: New tests from Craig.

	* g77.f-torture/execute/980628-3.f: Remove mail headers.

Sun Jun 28 12:49:02 1998  Jeffrey A Law  (law@cygnus.com)

	* g77.f-torture/execute/980628-4.f: New test from Craig.
	* g77.f-torture/execute/980628-5.f: Likewise.
	* g77.f-torture/execute/980628-2.f: Likewise.
	* g77.f-torture/execute/980628-0.f: Likewise.
	* g77.f-torture/execute/980628-1.f: Likewise.
	* g77.f-torture/execute/980628-3.f: Likewise.
	* g77.f-torture/execute/980628-6.f: Likewise.

Sun Jun 28 00:37:26 1998  Jeffrey A Law  (law@cygnus.com)

	* lib/g77.exp (default_g77_version): Tweak to make it work in a build
	directory when nothing has been installed yet.

Sat Jun 27 23:23:18 1998  Carlo Wood  <carlo@runaway.xs4all.nl>

	* gcc.c-torture/special/special.exp: Handle newer versions of
	dejagnu.

Fri Jun 26 17:57:40 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/980626-1.c: New test.

Fri Jun 19 23:26:12 1998  Bruno Haible <haible@ilog.fr>

	* gcc.misc-tests/m-un-2.c: New test.
	* g++.old-deja/g++.other/warn01.c: Likewise.

Fri Jun 19 14:06:36 1998  Robert Lipe  <robertl@dgii.com>
	
	* gcc.dg/980414-1.c: Move comments outside of ASM to improve
	compatibility with assmblers with a different comment character.
	Eliminate use of GAS-specific extensions. 

Fri Jun 19 02:05:14 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/ieee/980619-1.c: New test.

Fri Jun 19 00:58:11 1998  Robert Lipe  <robertl@dgii.com>

	*lib/g77.exp: Replace search for libf2c.a with search for newly
	renamed libg2c.a

Wed Jun 17 18:53:12 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980617-1.c: New test.

Fri Jun 12 01:08:49 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980612-1.c: New test.

Mon Jun  8 02:13:42 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/980523-1.c: Only test on ppc-linux.
	* gcc.dg/980526-1.c, gcc.dg/switch-1.c: Likewise.

	* gcc.c-torture/execute/980608-1.c: New test.

Thu Jun  4 01:39:24 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980604-1.c: New test.

Tue Jun  2 20:51:43 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/980602-1.c: New test.
	* gcc.c-torture/execute/980602-2.c: Likewise.

1998-06-02  Dave Love  <d.love@dl.ac.uk>

	* 970125-0.f: Fix per JCB.  Add commentary.

Fri May 29 01:10:12 1998  Peter Leven <leven@lpr.e-technik.tu-muenchen.de>

	* gcc.c-torture/execute/ieee/fp-cmp-1.c: Set up signal handler
	earlier.

Thu May 28 00:17:42 1998  Catherine Moore <clm@cygnus.com>

	* gcc.c-torture/execute/980526-3.c: New test.

1998-05-27  Manfred Hollstein  <manfred@s-direktnet.de>

	* g++.old-deja/g++.jason/thunk2.C: Setup this test to be expected to
	fail on m68k-motorola-sysv and m88k-motorola-sysv3.
	* g++.old-deja/g++.jason/thunk3.C: Add m68k-motorola-sysv and
	m88k-motorola-sysv3 to XFAIL.

Tue May 26 23:58:03 1998  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* gcc.dg/980526-1.c: New test.
	* gcc.c-torture/execute/980526-2.c: New test.

Tue May 26 23:40:40 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/980523-1.c: Change "ppc" to "powerpc".

	* gcc.c-torture/execute/980526-1.c: New test.

1998-05-26  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/alpha2.f: Add runtime test.

1998-05-24  Jason Merrill  <jason@yorick.cygnus.com>

	* g++.old-deja/old-deja.exp: Strip leading directories.

	* lib/old-dejagnu.exp: All tests fail if we got an internal compiler
	error for the line.  Don't run multiple tests for the same line.

Sat May 23 23:27:10 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/980523-1.c: New test.

1998-05-23  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/compile/970915-0.f: New test.

1998-05-23  Jason Merrill  <jason@yorick.cygnus.com>

	* lib/old-dejagnu.exp: Ignore C++ "instantiated from" mesages.

Thu May 21 23:23:21 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/980520-1.c: New test.

Wed May 20 14:37:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* gcc.dg/980502-1.c: Fix return type.

Wed May 20 11:29:48 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/{980502-1.c, clobbers.c}: New tests.
	* gcc.c-torture/compile/{980504-1.c, 980506-1.c}: Likewise.
	* gcc.c-torture/compile/{980506-2.c, 980611-1.c}: Likewise.
	* gcc.c-torture/execute/{980505-1.c, 980505-2.c, 980506-1.c}: Likewise.
	* gcc.c-torture/execute/{980506-2.c, 980506-3.c}: Likewise.

1998-05-20  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/980520-1.f: New test.

1998-05-15  Dave Love  <d.love@dl.ac.uk>

	* lib/mike-g77.exp: New file.

	* g77.f-torture/noncompile/noncompile.exp,
	g77.f-torture/noncompile/check0.f: New files.

1998-05-14  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/short.f, g77.f-torture/execute/le.f,
	g77.f-torture/execute/exp.f, g77.f-torture/execute/erfc.f,
	g77.f-torture/execute/dnrm2.f, g77.f-torture/execute/dcomplex.f,
	g77.f-torture/execute/cpp.F, g77.f-torture/execute/complex_1.f,
	g77.f-torture/execute/claus.f, g77.f-torture/execute/cabs.f: Call
	abort where appropriate.

Tue May  5 19:20:13 1998  Michael Meissner  <meissner@cygnus.com>

	* lib/c-torture.exp (TORTURE_OPTIONS): Add -Os to options.
	* lib/f-torture.exp (TORTURE_OPTIONS): Ditto.

1998-04-29  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/compile/980419-1.f: Removed since doesn't compile.

1998-04-27  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/compile/980427-0.f: New test.

1998-04-24  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/compile/980424-0.f: New test.

1998-04-19  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/compile/980419-2.f (main): New test.
	* g77.f-torture/compile/970125-0.f: New test.
	* g77.f-torture/compile/980419-1.f: New test.

Wed Mar 18 16:22:22 1998  Jim Wilson  <wilson@cygnus.com>

	* gcc.dg/980313-1.c: New test for fp conditional move on PPro.
	* gcc.dg/980312-1.c: Fix typo in -march command.

Mon Mar 16 20:01:30 1998  H.J. Lu  (hjl@gnu.org)

	* gcc.dg/980312-1.c: New test for fp conditional move on PPro.

Wed Mar 11 13:08:48 1998  Robert Lipe  <robertl@dgii.com>

	* g77.f-torture/execute/980310-5.f: Deleted.  Craig Burley and
	Dave Love agree the Fortran source is bogus.

Wed Mar 11 00:03:49 1998  Robert Lipe  <robertl@dgii.com>

	* g77.f-torture/compile/980310-1.f, g77.f-torture/compile/980310-2.f
	g77.f-torture/compile/980310-3.f, g77.f-torture/compile/980310-4.f
	g77.f-torture/compile/980310-6.f, g77.f-torture/compile/980310-7.f
	g77.f-torture/compile/980310-8.f: New tests from egcs-bugs archives.
	* g77.f-torture/execute/980310-5.f: New test from egcs-bugs archives.

Tue Mar 10 00:31:51 1998  Alexandre Oliva   <oliva@dcc.unicamp.br>

	* g++.old-deja/g++.other/friend1.C: New test.

1998-02-18  Dave Love  <d.love@dl.ac.uk>

	* g77.f-torture/execute/dnrm2.f (dnrm2): Avoid uninitialized (and
	possibly uninitialized) variables and declare dnrm2.

Fri Feb 13 00:36:07 1998  Jeffrey A Law  (law@cygnus.com)

	* gcc.dg/ifelse-1.c: New test.

Mon Feb  9 02:08:47 1998  H.J. Lu  (hjl@gnu.org)

	* lib/g77.exp (g77_target_compile): Fix multilibs for libf2c.

        * lib/old-dejagnu.exp (old-dejagnu): Added the
        "execution test - XFAIL *-*-*" handling in the spirit of
        "excess errors test -". Changed the "execution test fails"
        handling to be like "excess errors test fails".
        * Update various tests accordingly.

Sun Jan 18 01:33:59 1998  Jeffrey A Law  (law@cygnus.com)

	* lib/c-torture.exp: Look for .x files instead of .cexp files.
	* lib/f-torture.exp: Similarly.
	* gcc.c-torture: Rename all .cexp files to .x files.

Tue Nov 25 16:18:51 1997  Kate Hedstrom  (kate@ahab.rutgers.edu)

        * lib/f-torture.exp: Improve error and loop detection.

Fri Sep 26 10:50:53 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/c-torture.exp(c-torture-execute): Fix typo.

	* lib/old-dejagnu.exp(old-dejagnu): Use a name derived from the
	testcase as the executable name. Keep the executable around if
	the test fails.

Fri Sep 19 17:19:53 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/c-torture.exp (TORTURE_OPTIONS): Removed unnecessary
 	changes.  Only test one -g option, and move it to the end of the
 	list of options to test.

Fri Sep 19 17:58:00 1997  Michael Meissner  <meissner@cygnus.com>

	* lib/c-torture.exp (TORTURE_OPTIONS): Check for the environment
	variable GCC_TORTURE_OPTIONS to supply default switches separated
	by colons.  If no environment variable, run tests with -O0 -g, -O1
	-g, and -O2 -g as well.

Wed Sep 17 10:12:26 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/plumhall.exp: Don't set PHSRC in this file. Add a few
	explanatory comments. Fix indentation.

Mon Sep 15 00:36:53 1997  Jeffrey A Law  (law@cygnus.com)

	* lib/g++.exp (g++_init): Look for xgcc in $basedir too.

Thu Sep 11 13:54:47 1997  Jeffrey A Law  (law@cygnus.com)

	* g++.old-deja/g++.brendan/scope4.C: No longer expected to fail.
	* g++.old-deja/g++.mike/p7325.C: Likewise.
	* g++.old-deja/g++.mike/eh51.C: No longer expected to fail on the PA.

Thu Sep 11 10:00:03 1997  Alexandre Oliva  (oliva@dcc.unicamp.br)

	* g++.old-deja/g++.brendan/crash20.C: Rework to avoid libg++.
	* g++.old-deja/g++.brendan/crash30.C: Likewise.
	* g++.old-deja/g++.brendan/crash39.C: Likewise.
	* g++.old-deja/g++.law/operators4.C: Likewise.

Thu Sep 11 09:53:40 1997  Joe Buck  (jbuck@synopsys.com)

	* g++.old-deja/g++.mike/p658.C: eliminate <bool.h> use.
	* g++.old-deja/g++.mike/p784.C: Ditto.
	* g++.old-deja/g++.mike/p785.C: Ditto.

Fri Sep  5 00:21:42 1997  Jeffrey A Law  (law@cygnus.com)

        * gcc.c-torture/execute/cbrt.c: Tweak to work on more targets.

Wed Sep  3 17:15:00 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/c-torture.exp(c-torture-execute): If the previous and the
 	current executables being tested are identical, we don't need to
 	run the executable again. Try to make the executable names
 	unique. Add an optional argument for passing additional compiler
 	flags.

Tue Sep  2 16:34:31 1997  Doug Evans  <dje@canuck.cygnus.com>

	* lib/gcc-dg.exp (gcc-dg-test): Fix typos setting compile_type.

Thu Jul 31 12:17:24 1997  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/920501-9.c: Fix to work on targets with
	32bit or larger longs.

	* gcc.c-torture/execute/961017-2.c: Fix to work on targets which
	have either a 32bit long or 32bit int.

Wed Jul  9 15:15:40 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gcc.prms/5403.c: Allow CRLFs to occur at the start of the output
	too.

Mon Jun 16 15:27:06 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/g++.exp(g++_init): Use g++_include_flags instead of making
	up the includes ourselves.

Wed Jun 11 17:33:21 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/plumhall.exp: Remove random include, and add a few
	verbose messages for debugging.

Fri Jun  6 14:23:24 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/g++.exp: Use g++_link_flags from libgloss.exp, instead
	of trying to do it ourselves.

Wed Jun  4 18:43:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gcc.prms/5403.c: Made regexp a bit less strict.

Tue Jun  3 15:12:39 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/mike-gcc.exp: Don't use global exec_output anymore. Output
	is returned from remote_load instead.
	* lib/plumhall.exp: Ditto.
	* lib/mike-g++.exp: Ditto.
	* lib/old-dejagnu.exp: Ditto.
	* lib/c-torture.exp: Ditto.

Fri May 30 23:15:15 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/g++.exp: Use build_wrapper procedure.
	* lib/gcc.exp: Ditto.

Tue May 20 15:23:27 1997  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/*.c: Include stdlib.h instead of using
	an old-style decl for malloc.  Fixes tests to work when
	sizeof (int) != sizeof (size_t).

Thu May 15 14:10:39 1997  Mike Meissner  <meissner@cygnus.com>

	* lib/gcc.exp (gcc_target_compile): If gcc,no_varargs, define
	NO_VARARGS when compiling.

Thu May  1 14:49:19 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/plumhall.exp(ph_includes): New procedure.
	(ph_make): Use it.
	(ph_compiler): Ditto.

	* lib/g++.exp: Rename test-glue.c to testglue.c.
	* lib/gcc.exp: Ditto.

Thu Apr 10 14:50:26 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/g++.exp(g++init): Don't try to be smart, always run g++_init
 	to completion when it's called.

Thu Mar 20 09:50:32 1997  Doug Evans  <dje@canuck.cygnus.com>

	* lib/plumhall.exp (ph_make): Comment out errorCode=NONE test
	for object files.
	(ph_summary): Mark skipped testcases as untested, not unresolved.

	* lib/plumhall.exp (ph_make): If unresolved because of bad
	errorCode, record errorCode in log file.
	(*): Replace send_log/verbose with verbose -log.

Thu Mar 13 16:09:28 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/plumhall.exp: Use incr_count.

Wed Mar 12 10:01:33 1997  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture: Update to c-torture-1.45.

Sun Feb 23 18:12:04 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gcc.exp(gcc_init): Add args parameter (which will contain
 	the name of the expect testcase file).
	
	* lib/g++.exp(g++_init): Ditto.

Thu Feb 20 13:53:05 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/g++.exp(g++_exit): $gluefile lives on the build, not
	the host.

	* lib/gcc.exp(gcc_exit): New procedure.

Wed Feb 19 15:16:16 1997  Bob Manson  <manson@charmed.cygnus.com>

	* g++.old-deja/g++.rfg/*: Added "Build don't link" and ERROR
	specs where appropriate.

	* g++.old-deja/g++.arm/*: Added additional ERROR checks
	because of new "candidates are" messages, and removed a few

	* Converted all non-old-style g++ testcases to old-style, and
	moved into g++.old-deja.

Fri Feb 14 11:46:46 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/old-dejagnu.exp(old-dejagnu): Add various "skip if"
	options.

	* lib/gcc.exp(gcc_init): Don't set gluefile unless the compile
	succeeded.

	* lib/g++.exp(g++_init): Don't unset gluefile unless it exists.

Thu Feb 13 17:30:46 1997  Michael Meissner  <meissner@cygnus.com>

	* lib/gcc.exp (gcc_target_compile): Add support for defining
	NO_TRAMPOLINES and NO_LABEL_VALUES if the baseboard file indicates
	the machine doesn't have those features.

Tue Feb 11 12:57:11 1997  Bob Manson  <manson@charmed.cygnus.com>

	* g++.law/operators4.exp: Don't use LIBS.

Sat Feb  8 14:45:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* g++.law/virtual1.exp: Don't use CXX_FLAGS.
	
	* lib/mike-g++.exp: Don't set the compiler to be tested here.
	* lib/g++.exp: Set it here instead. Also, allow use of the
	--tool_exec and --tool_opt options. Change CXX to
	GXX_UNDER_TEST.
	
	* g++.old-deja/old-deja.exp: Change CXX to GXX_UNDER_TEST.
	
	* lib/gcc.exp: Allow use of --tool_exec and --tool_opt.

Fri Feb  7 12:55:45 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/old-dejagnu.exp: Use prune_warnings instead of
 	prune_system_crud.
	* lib/mike-g++.exp: Ditto.
	* lib/gcc.exp: Ditto.
	* lib/g++.exp: Ditto.

	* lib/g++.exp: Include both libstdc++ and libstdc++/stl.

Fri Feb  7 10:41:53 1997  Jeffrey A Law  (law@cygnus.com)

        * 941014-2.c: Include stdlib.h
        * 960327-1.c: Include stdio.h
        * dbra.c, index-1.c: Don't assume ints are 32bits.

Tue Feb  4 12:51:09 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gcc.exp: Add gcc,stack_size target feature.

	* lib/g++.exp(g++_target_compile): Add the include and link 
	paths here, not in two other places. And, it's $options, not
	options.

	* lib/mike-g++.exp(postbase): Remove the code that determines
	the correct include and link paths.
	* g++.old-deja/old-deja.exp: Ditto.

Mon Feb  3 19:00:07 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/g++.exp(g++_init): target_compile no longer returns the
	filename of the result.

Sun Feb  2 14:42:34 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gcc.misc-tests/gcov.exp: Add -nocomplain to the
	call to glob.

	* gcc.c-torture/special/special.exp: Change call to
 	gcc_target_compile to include the object file.

Sun Feb  2 17:11:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	* gcc.c-torture/special/special.exp: Correct misspelling in last
	change.

Sat Feb  1 12:34:23 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/plumhall.exp(ph_summary): Log the entire output of the
 	executable. Return -1 if there were any failures, 0 otherwise.
	(ph_execute): Return -1 if there were any failures, 0 otherwise.
	(ph_make): Clean up objects and executables that were built
	if the tests succeeded.

Thu Jan 30 13:45:56 1997  Bob Manson  <manson@charmed.cygnus.com>

	* g++.old-deja/old-deja.exp: Add -L and -I flags so we include
	libraries and includes in the build tree as appropriate.

Wed Jan 29 17:19:34 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/c-torture.exp: Instead of looking for the global variable
	NO_LONG_LONG, check to see if that's a feature of the target.

Wed Jan 29 00:36:25 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/default.exp: Minimize. Delete the remainer of the files in
	config;	this functionality is now in devo/dejagnu/config.

	g++.*/*: Pass any additional flags used to compile to postbase;
	delete CXXFLAGS.
	
	gcc.c-torture/*: Remove calls to gcc_init and gcc_finish; this
	is now done by runtest.exp. Use gcc_target_compile instead of
	compile.

	lib/c-torture.exp: Use gcc_target_compile instead of compile.
	Remove references to CFLAGS. Use remote_file instead of
	calling rm -f.
	(c-torture): Take a list of arguments to use to compile this
	testcase.

	lib/g++.exp: Simplify. Use target_compile instead of compile.
	lib/gcc-dg.exp: Ditto.
	lib/gcc.exp: Ditto.
	lib/mike-{gcc,g++}.exp: Ditto.
	lib/old-dejagnu.exp: Ditto.
	lib/plumhall.exp: Ditto.
	
Wed Jan  8 14:43:07 1997  Jim Wilson  <wilson@cygnus.com>

	* lib/plumhall.exp (ph_make): Use CFLAGS and ANSICFLAGS when linking.
	(ph_linker): Likewise.

Wed Nov 13 16:04:19 1996  Joern Rennecke <amylaar@cygnus.com>

        * gcc.c-torture/execute/{loop-2e.c,loop-2f.c}: Only use
	MAP_ANON / MAP_ANONYMOUS if defined;
	else try to map from /dev/zero .

Tue Nov 12 23:30:12 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/{loop-2e.c,loop-2f.c}:  If MAP_ANON
	isn't defined, then define it to MAP_ANONYMOUS.

Tue Nov 12 11:57:49 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture: Update to c-torture-1.42 release.

Mon Nov 11 12:45:31 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture: Update to c-torture-1.41 release.

Sun Oct 27 18:56:18 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/enum-1.c: New test.  Will be in next
	c-torture release.

Thu Aug 15 11:09:36 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/gcc.exp (gcc_init): Always append the target_info to CFLAGS
	and LDFLAGS.  Fix second case to append the target_info ldflags
	onto LDFLAGS, not CFLAGS.
	* lib/g++.exp (g++_init): Add target_info stuff.
	* lib/old-dejagnu.exp (old-dejagnu-init): Likewise.  Add inclusion
	of libgloss and newlib flags for !native.

	* config/proelf.exp: Load remote.exp and do `push_target hppro'.
	(GDB): Fix relative path to go up another dir for finding gdb.

Thu Aug  8 17:03:27 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/gcc.exp(gcc_init): Set CFLAGS and LDFLAGS to their new
	versions in the target_info array, if they don't exist.

Fri Aug  2 15:39:03 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/vx.exp (${tool}_load): Fix syntax of `$shell_id < 0'.

Mon Jul  8 15:45:58 1996  Jim Wilson  <wilson@cygnus.com>

	* lib/g++.exp: Change all uses of $base_dir/ to $base_dir/../.
	* lib/gcc.exp, lib/old-dejagnu.exp: Likewise.

Mon Jul  1 15:53:00 1996  Bob Manson  <manson@charmed.cygnus.com>

	* lib/old-dejagnu.exp: Don't remove the output file before we've
	actually tested it. Don't append pwd to the path of the executable
	we're testing.

Sun Jun 30 14:37:50 1996  Doug Evans  <dje@canuck.cygnus.com>

	* lib/g++.exp (default_g++_start): Don't pass LDFLAGS, LIBS if -c.

Wed Jun 26 14:15:55 1996  Bob Manson  <manson@charmed.cygnus.com>

	* lib/old-dejagnu.exp (old-dejagnu): Add $tmpdir to specify a
 	temporary directory for compiler files, and set it to a default
 	value of /tmp. Set $output as the name of the output file from
 	compiling the testcase. Add a -o option to $cflags_var so the
 	compiler writes the final output file as $output. Set $executable
 	to $output.

	* lib/mike-g++.exp (postbase): Add $tmpdir to specify a temporary
 	directory for compiler files, and set it to /tmp if it doesn't
 	already have a value. Set $output_file to the name of the output
 	file from compiling the testcase. Add a -o option to CXXFLAGS so
 	the compiler writes the final output file as $output. Use $output
 	as the executable to be tested.

Mon Jun 24 17:12:16 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/g++.exp: Also add -Wl,-rpath,... for linux.

Sat Jun  8 15:12:24 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture/execute/pending-1.c: New test.  Still
	pending in Tege's queue.

Wed Apr 24 18:13:45 1996  Jim Wilson  <wilson@chestnut.cygnus.com>

	* lib/plumhall.exp (ph_summary): Add arguments name and exec_status.
	Add variables local_failcnt and local_unresolvedcnt.  Call gcc_fail
	if there were failures.  Call unresolved if there were unresolved
	testcases.  Call gcc_fail if program did not run to completion.
	(ph_make): Pass additional argument name to ph_execute.
	(ph_execute): Add new argument.  Pass additional arguments to
	ph_summary.  Call gcc_fail is there is no execution output.

Wed Apr 24 13:39:23 1996  Jeffrey A Law  (law@cygnus.com)

	* lib/plumhall.exp (proc_summary): Output relavent summary
	lines into the log so specific failures in plumhall can be
	investigated.

Wed Apr 10 13:23:45 1996  Jeffrey A Law  (law@cygnus.com)

	* lib/c-torture.exp: Provide a default value for $NO_LONG_LONG.
	(c-torture-execute): Don't try to execute tests which use
	"long long" types if $NO_LONG_LONG is nonzero.

Mon Apr  8 08:52:29 1996  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.c-torture/execute/ieee/ieee.exp: Run c-torture-execute,
	not c-torture.

	* gcc.ieee: Move from here.
	* gcc.c-torture/execute/ieee: To here.

Tue Mar 26 23:41:18 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture: Update to c-torture-1.41 release.

Fri Mar 22 15:49:24 1996  Jeffrey A Law  (law@cygnus.com)

	* lib/c-torture.exp (c-torture-execute): Remove "$executable",
	not "$output".

Thu Mar  7 12:37:08 1996  Doug Evans  <dje@charmed.cygnus.com>

	* lib/gcc.exp (default_gcc_start): Don't pass $LDFLAGS $LIBS if
	-c present.

Sat Mar  2 22:36:37 1996  Jeffrey A Law  (law@cygnus.com)

	* config/proelf.exp: Handle connecting to a simulator.

Wed Jan 31 00:58:15 1996  Jeffrey A Law  (law@cygnus.com)

	* config/proelf.exp: New file.  Enough framework that we can
	run c-torture tests on the proelf targets (or any other target
	that gdb can connect to for that matter).

Mon Jan 29 08:57:46 1996  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.c-torture/special/special.exp: Delete libs arg to dg-runtest.
	* gcc.ph/testing/limits/limits.exp: Likewise.  Don't pass $CFLAGS.

	* lib/plumhall.exp (ph_execute): Always call ph_summary if
	exec_output exists.

Sun Jan 28 11:28:43 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/sim.exp (SIM_TIME_LIMIT): New user settable variable.
	(${tool}_load): Use 240 seconds if SIM_TIME_LIMIT not set.

	* config/*.exp: Update FSF address.  Change result of ${tool}_load
	to pass/fail/unresolved/unsupported/untested.  Caller must now
	call unresolved/unsupported/untested.
	* lib/*.exp: Update FSF address.  Update to handle new results of
	${tool}_load.
	* lib/chill.exp (verbose): Delete.

Sat Jan 27 12:28:07 1996  Doug Evans  <dje@charmed.cygnus.com>

	* lib/gcc.exp (default_gcc_start): Change order of args to
	$LDFLAGS $CFLAGS $LIBS.
	* lib/gcc-dg.exp (gcc-dg-test): Arguments have changed, update.
	Save/set/restore CFLAGS.  Pass single arg to gcc_start.
	* gcc.dg/dg.exp: Delete libs arg in call to dg-runtest.
	(CC,CFLAGS,LIBS): Delete references. Don't pass $CFLAGS to dg-runtest.
	* gcc.misc-tests/dg-test.exp: Likewise.
	* gcc.misc-tests/msgs.exp: Likewise.
	* gcc.prms/prms.exp: Likewise.
	* gcc.misc-tests/gcov.exp: Delete libs arg in call to dg-runtest.
	(CFLAGS,LIBS): Delete references.  Don't pass $CFLAGS to dg-runtest.

	* lib/dg.exp: Deleted, moved to dejagnu/lib.

Wed Jan 24 18:37:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* g++.old-deja/old-deja.exp: Add passing of $mathlib to old-dejagnu.

	* g++.old-deja/old-deja.exp: Move setting of runshlib from here...
	* lib/old-dejagnu.exp (old-dejagnu-init): ...to here.

	* lib/g++.exp (g++_init): Take out use of -rpath for the sun4, not
	necessary.

Sat Jan 20 17:22:08 1996  Brendan Kehoe  <brendan@cygnus.com>

	* g++.old-deja/old-deja.exp: Move setting of runshlib out of the
	global for loop; add use of $mathlib.
	* lib/old-dejagnu.exp (old-dejagnu-init): Put the runshlib
	settings here; set mathlib for anything but VxWorks.

Mon Jan 22 16:31:57 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture: Update to c-torture-1.40 release.

Wed Jan  3 00:54:33 1996  Jeffrey A Law  (law@cygnus.com)

	* gcc.ph/testing/limits/limits.exp: Load ${tool}-dg.exp, not
	dg.exp.

Sun Dec  3 16:17:42 1995  Jeffrey A. Law  <law@sethra.cygnus.com>

	* lib/c-torture.exp (c-torture-execute): Declare "output" as
	global.

Fri Nov 17 20:01:19 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/g++.exp (LIBS): Define if not already.
	* lib/gcc-dg.exp (gcc-dg-test): Set executable file as a.out.
	(gcc-dg-prune): Call prune_gcc_output.
	* lib/gcc.exp (prune_gcc_output): New proc.
	* gcc.c-torture/special (921210-1.c): Call prune_system_crud and
	prune_gcc_output.

Thu Nov 16 09:15:40 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/c-torture.exp (c-torture-compile): Fix calls to `unsupported'.
	(c-torture-execute): Likewise.	Rename `name' to `testcase'.

Wed Nov 15 23:04:36 1995  Jeffrey A Law  (law@cygnus.com)

	* gcc.c-torture: Update to c-torture-1.39 release.

Sat Nov  4 12:52:05 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/c-torture.exp (c-torture-execute): Don't return if one option
	fails, try others as well.

Thu Nov  2 09:28:35 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/c-torture.exp (c-torture-execute): This proc's result is `void'.
	If compilation fails, mark execute tests as `untested'.
	If test is marked as unsupported, don't mark compilation and
	execute tests as failed.

Wed Oct 25 20:57:55 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/g++.exp (g++_init): Don't link in libg++, and look to
	libstdc++ for whether or not we want to be doing shared
	libraries.  Delete link_curses since we don't need it anymore.
	* lib/mike-g++.exp (postbase): Don't link in libg++.
	* g++.old-deja/old-deja.exp: Likewise.

Mon Oct 23 13:05:11 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/g++.exp (CXX): Default to run `c++' instead of `g++'.

Tue Oct 17 15:24:47 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/g++.exp (g++_init): Also check for libg++.sl for the hppa.
	For that, add `-Wl,-a,shared_archive'.
	* g++.old-deja/old-deja.exp: Likewise.

Tue Oct 17 13:09:06 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/c-torture.exp (c-torture-execute): Ensure CFLAGS restored.

Mon Oct 16 23:13:32 1995  Brendan Kehoe  <brendan@cygnus.com>

	* lib/mike-g++.exp (postbase): Pay attention to the status of
	g++_load.

Mon Oct 16 19:28:32 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

        * g++.old-deja/old-deja.exp: Add $LIBS at the end of the args.

Mon Oct 16 13:48:58 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/gcc.exp (default_gcc_start): No longer need to log program
	being executed or its output, execute_anywhere does that now.
	* lib/g++.exp (default_g++_version): Call execute_anywhere.
	(default_g++_start): Likewise.  Delete calls to verbose/send_log.

Thu Oct 12 10:34:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* g++.old-deja/old-deja.exp: Updated the shared libg++ tests to be
	the same as those in lib/g++.exp.

Tue Oct 10 13:47:27 1995  Jeff Law  (law@hurl.cygnus.com)

	* gcc.c-torture: Update to c-torture-1.38 release.
	* gcc.ieee: Related changes.

Fri Oct  6 12:39:17 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* mike-gcc.exp, mike-g++.exp: Use "execute_anywhere" rather than
	"exec". Minor reformatting changes.

	* config/rom68k.exp (${tool}_load): Make it work in a canadian
	cross. This means all "exec" calls now work on a remote host as
	well.
	* lib/c-torture.exp (c-torture-compile): Make work for a canadian
	cross. Filter out the extra "\r\n" stuff that expect puts in.
	(c-torture-execute): Filter out the bogus warnings like
	c-torture-compile does. Add support for canadian cross.
	* lib/gcc.exp (default_gcc_version, default_gcc_start)
	Use execute_anywhere rather than calling exec directly. Now it
	works for canadian cross testing.

Thu Oct  5 10:06:45 1995  Brendan Kehoe  <brendan@rtl.cygnus.com>

	* lib/g++.exp: Add -nocomplain flag to glob.  Use catch to put the
	results into a variable, and check that rather than using file exists.

Wed Oct  4 16:31:02 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/g++.exp: Use glob to see libg++.so.2.7.0, since sun4 doesn't
	create a libg++.so.  For sunos4.1.*, also add -ltermcap.

Tue Sep 26 10:15:14 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* g++.old-deja/old-deja.exp: Create and pass runshlib and
	lib_curses if there's a shared libg++ in the build tree.

Fri Sep 22 10:47:24 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/mike-{gcc,g++}.exp (postbase): Restore CFLAGS, CXX_FLAGS, LIBS
	if not supported target.

Fri Sep 22 09:22:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/g++.exp (g++_init): Move empty setting of runshlib and
	link_curses up to always happen, not just for native builds.

Thu Sep 21 10:23:32 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gcc.c-torture: Update to c-torture-1.36 release.
	* gcc.failure: Related changes.

Wed Sep 20 10:56:26 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/plumhall.exp (PHSRC, PHDST): Allow config files to override.

Tue Sep 19 17:26:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/g++.exp (g++_init): Put the shared and math lib stuff in here.
	* lib/mike-g++.exp (postbase): Not in here.  Still reference
	runshlib, link_curses, and mathlib for link and run.

	* lib/mike-g++.exp (postbase): If we've built a libg++.so, then
	pass the runtime shared library options for Solaris, OSF/1, and
	Irix5, and link with -lcurses to avoid unresolved references.
	
Wed Sep 13 15:28:10 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/gcc.exp (gcc_init): Return if gcc_initialized is 1, so we
	only run once.

Wed Sep 13 10:51:52 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/c-torture.exp (c-torture-compile): Don't alter CFLAGS.

Mon Sep 11 11:02:03 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gcc.c-torture: Update to c-torture-1.35 release.  Note we
	do not have a framework for the "compat" tests yet.

Sat Sep  9 16:15:20 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/mike-g++.exp (postbase): New local variable `mathlib',
	set to null if we're testing vxworks5.1.  Use that instead of
	`-lm' in the setting of LIBS for link and run.

Fri Sep  8 13:53:38 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/rom68k.exp (${tool}_load): Major changes to make it
	work.  Verified that it does in fact return the stuff in
	exec_output properly.  Catch any Emul or any TRAP other than 0.

Thu Sep  7 23:04:06 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/mike-g++.exp (prebase): Call g++_init at the end to set
	LDFLAGS properly for targets that need stuff from libgloss.
	* lib/g++.exp (g++_init): Return if gpp_initialized is 1, so we
	only run once.
	(gpp_initialized): New variable.

Wed Sep  6 21:56:13 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* config/rom68k.exp: Load libgloss.exp.
	* lib/gcc.exp (gcc_init): get proper flags for newlib and libgloss
	so we can produce a fully linked binary.
	* lib/g++.exp (g++_init): get proper flags for newlib and libgloss
	so we can produce a fully linked binary.

Sun Sep  3 13:25:26 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/plumhall.exp (ph_section): Watch for expected failures.
	Add missing `else'.

	* lib/c-torture.exp (c-torture-execute): Look for .cexp files to
	run the testcase.
	(c-torture): Likewise.

Mon Aug 28 11:23:38 1995  Doug Evans  <dje@cygnus.com>

	* gcc.dg/dg.exp (scan-assembler, scan-assembler-not): New procs.

	* lib/mike-g++.exp (mike_cleanup): New proc.
	(prebase): New globals compiler_result, not_compiler_result,
	target_regexp.
	(postbase): Likewise.  Call mike_cleanup.  Pass "--" to regexp to
	allow leading "-" in pattern.  Watch for unsupported tests.
	If $compiler_result is set, pattern match assembler code,
	and ditto for $not_compiler_result.
	* lib/mike-gcc.exp: Likewise.

	* lib/plumhall.exp (ph_execute): Only call ph_summary if
	execution "succeeded".

Mon Aug 14 14:03:53 1995  Doug Evans  <dje@canuck.cygnus.com>

	* config/win32.exp: New file.
	* lib/c-torture.exp (c-torture-execute): Handle $exe_ext.

Fri Aug  4 15:39:54 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/gcc-dg.exp (gcc-dg-prune): Mark testcases that fill ram as
	unsupported.
	* lib/mike-{gcc,g++}.exp (postbase): Likewise.
	* lib/{c-torture.exp,old-dejagnu.exp}: Likewise.
	* lib/{gcc,g++}.exp (${tool}_check_untested_p): New proc.

	* lib/mike-g++.exp (postbase): Delete alpha-*-* checking of
	"... without exceptions was ...".  That is now handled by
	prune_system_crud.
	* lib/old-dejagnu.exp (old-dejagnu): Likewise.

Tue Aug  1 11:09:33 1995  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.misc-tests/{acker1.c,dhry.c,dhry.h,matrix1.c,optbench.c,
	sieve.c,sort2.c}: New files.
	* gcc.misc-tests/{acker1.exp,dhry.exp,matrix1.exp,optbench.exp,
	sieve.exp,sort2.exp}: Drivers for them.

	* lib/mike-gcc.exp (program_output): New user settable variable.
	(postbase): Call prune_system_crud.  Also prune extraneous compiler
	messages.
	* lib/mike-g++.exp (program_output): New user settable variable.

	* gcc.misc-tests/mg.exp (compiler_output): Handle multiple lines.

	* config/sh.exp: Deleted (use sim.exp instead).

Fri Jul 28 11:33:46 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/vx.exp: Declare CHECKTASK as global.
	* config/vxworks29k.exp: Reduce to only set CHECKTASK, and load vx.exp.
	* lib/mike-g++.exp: Load [pwd]/a.out, not `./a.out'.
	* lib/old-dejagnu.exp: Load [pwd]/$executable.

Wed Jul 26 19:45:39 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/vxworks29k.exp: New file, for the a29k-vxworks5.1
	target. Like vx.exp, only includes `vx29k.exp' instead of
	`vxworks.exp'.

Sun Jul 23 17:38:52 1995  Ian Lance Taylor  <ian@cygnus.com>

	* config/sim.exp: Increase time limit from 120 seconds to 240.

Thu Jul  6 11:07:38 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* gcc.c-torture/execute/950628-1.c: New test.

Sat Jun 10 18:51:41 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gcc.c-torture: Update with changes/additions from
	c-torture-1.34.

Mon Jun  5 17:58:07 1995  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.prms/prms.exp: Pass LDFLAGS to dg-test.

Sun Jun  4 05:13:57 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gcc.c-torture/compile/funcptr-1.c: Test case for 7107.

Thu Jun  1 00:06:19 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gcc.c-torture/compile/950512-1.c: New test.
	* gcc.c-torture/execute/strct-pack-4.c, strct-pack-5.c}: Likewise.
	* gcc.dg/struct-ret-1.c: Likewise.

Wed May 31 14:25:13 1995  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.c-torture/execute/{920410-1.c,921113-1.c,921208-2.c,
        930106-1.c,memcpy-1.c}: Use STACK_SIZE if defined.

Tue May 30 11:19:54 1995  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.c-torture/special/920411-1.c: Deleted.
	* gcc.c-torture/special/special.exp: Delete 920411-1.c.

Mon May 22 16:55:11 1995  Doug Evans  <dje@chestnut.cygnus.com>

	* config/sim.exp (${tool}_load): Hack in call to bash to get a
	cpu limit.

Fri May 12 18:57:54 1995  Torbjorn Granlund  <tege@rtl.cygnus.com>

	* gcc.c-torture/execute/{950511-1.c,950512-1.c}: New tests.

Thu May  4 14:23:54 1995  Torbjorn Granlund  <tege@adder.cygnus.com>

	From kenner;
	* gcc.c-torture/execute/va-arg-2.c (f[0-9], f1[0-5]): Verify format
	is the proper length.
	* va-arg-3.c: Likewise.

Sun Apr 30 16:02:59 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp: Moved to dejagnu/lib.  Copy kept here (for awhile).
	* lib/gcc-dg.exp: New file, gcc interface to dg.exp.

	* lib/gcc.exp (default_gcc_start): Delete old cruft.  Delete result.
	* lib/g++.exp (default_g++_start): Delete old cruft.

Tue Apr 25 17:20:18 1995  Torbjorn Granlund  <tege@cygnus.com>

	* gcc.c-torture/execute/memcpy-1.c: Decrease stack requirements from
	(2 * (1 << 18)) to (2 * (1 << 17)).

	* gcc.c-torture/execute/arith-rand.c: Avoid -0x80000000/-1.

Thu Apr 20 12:21:13 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* config/rom68k.exp: Renamed from config/idp.exp

Tue Apr 18 13:33:26 1995  Torbjorn Granlund  <tege@rtl.cygnus.com>

	* c-torture/compile/921109-2.c

Tue Apr 18 10:45:12 1995  Mike Stump  <mrs@cygnus.com>

	* lib/old-dejagnu.exp: We expect Execution test failure if we expected
	excess errors.

Sat Apr 15 11:16:58 1995  Doug Evans  <dje@chestnut.cygnus.com>

	* lib/gcc.exp (default_gcc_start): Handle leading "-" in compiler
	output.
	* lib/g++.exp (default_g++_start): Likewise.

Wed Mar 29 16:34:03 1995  Torbjorn Granlund  <tege@adder.cygnus.com>

	* gcc.c-torture/compile/950329-1.c: New test.

Tue Mar 28 16:10:33 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

        * config/bug.exp (${tool}_load): Updated to use new remote_open
	  and remote_close procs.
	* config/idp.exp: New file.

Wed Mar 22 15:01:58 1995  Torbjorn Granlund  <tege@rtl.cygnus.com>

	* gcc.c-torture/execute/950322-1.c: New test.

Tue Mar 21 21:24:49 1995  Doug Evans  <dje@canuck.cygnus.com>

	* config/vx.exp (${tool}_load): Clean up testing of return code from
	vxworks_ld and vxworks_spawn.

Tue Mar 21 17:01:42 1995  Doug Evans  <dje@deneb.cygnus.com>

	* lib/c-torture.exp (c-torture-execute): Pass same text to pass/fail.

Mon Mar 13 14:49:42 1995  Mike Stump  <mrs@cygnus.com>

	* lib/old-deja.exp: Add `excess errors test - ' error, now one
	can mark excess errors on a machine by machine basis.  Note, the
	default is to not expect any excess errors, even when excess
	errors test - is given, so you will want to put an XFAIL ... on
	these lines.  For example, // excess errors test - XFAIL hppa*-*-*
	mips-*-* alpha-*-* m68k-*-* is how to expect excess errors on
	those 4 machines, but no others.

Fri Mar 10 12:33:04 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* gcc.c-torture/execute/execute.exp (c-torture-execute): from here.
	* lib/c-torture.exp: to here.

Fri Mar 10 10:38:15 1995  Torbjorn Granlund  <tege@adder.cygnus.com>

	* gcc.c-torture/execute/950221-1.c: New test.
	* gcc.c-torture/execute/struct-ret-1.c: New test.
	* gcc.c-torture/compile/950221-1.c: New test.

	* gcc.c-torture/execute/941101-1.c (f): Fix typo, == was !=.

Fri Mar  3 16:28:35 1995  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.c-torture/execute/arith-1.c (main): Return 0.
	* gcc.c-torture/execute/arith-rand.c (main): Return 0.

Wed Mar  1 02:08:29 1995  Gerald Baumgartner  (gb@lorenzo.cs.purdue.edu)

	* g++.gb: New directory of tests, derived from my signature and
	class scoping tests.

	* g++.gb/{sig01.C, sig02.C, sig03.C, sig04.C}: New tests.
	* g++.gb/{sig05.C, sig06.C, sig07.C, sig08.C}: Likewise.
	* g++.gb/{sig09.C, sig10.C, sig11.C, sig12.C}: Likewise.
	* g++.gb/{sig13.C, sig14.C, sig15.C, sig16.C}: Likewise.
	* g++.gb/{sig17.C, sig18.C, sig19.C, sig20.C}: Likewise.
	* g++.gb/{sig21.C, sig22.C, sig23.C, sig24.C}: Likewise.
	* g++.gb/sig25.C: Likewise.

	* g++.gb/{sig01.exp, sig02.exp, sig03.exp, sig04.exp}: Run them.
	* g++.gb/{sig05.exp, sig06.exp, sig07.exp, sig08.exp}: Likewise.
	* g++.gb/{sig09.exp, sig10.exp, sig11.exp, sig12.exp}: Likewise.
	* g++.gb/{sig13.exp, sig14.exp, sig15.exp, sig16.exp}: Likewise.
	* g++.gb/{sig17.exp, sig18.exp, sig19.exp, sig20.exp}: Likewise.
	* g++.gb/{sig21.exp, sig22.exp, sig23.exp, sig24.exp}: Likewise.
	* g++.gb/sig25.exp: Likewise.

	* g++.gb/{scope01.C, scope02.C, scope03.C, scope04.C}: New tests.
	* g++.gb/{scope05.C, scope06.C, scope07.C, scope08.C}: Likewise.
	* g++.gb/{scope09.C, scope10.C, scope11.C, scope12.C}: Likewise.
	* g++.gb/scope13.C: Likewise, this test still fails.

	* g++.gb/{scope01.exp, scope02.exp, scope03.exp, scope04.exp}: Run 'em.
	* g++.gb/{scope05.exp, scope06.exp, scope07.exp, scope08.exp}: Ditto.
	* g++.gb/{scope09.exp, scope10.exp, scope11.exp, scope12.exp}: Ditto.
	* g++.gb/scope13.exp: Ditto.

	* g++.gb/README: New file, explains what these tests are about.

Tue Feb 28 10:37:52 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-do): Support `preprocess'.
	(dg-test): Likewise.

Mon Feb 13 15:18:10 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* config/udi.exp: change "continue -expect" to "exp_continue".

Sat Feb 11 00:25:20 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)

	* gcc.c-torture/execute/{921025-1.c, 930525-1.c}:
	Delete redundant tests.

	* gcc.c-torture/execute/{941014-1.c, 941014-2.c}: New tests.
	* gcc.c-torture/execute/{941015-1.c, 941021-1.c}: New tests.
	* gcc.c-torture/execute/{941025-1.c, 941031-1.c}: New tests.
	* gcc.c-torture/execute/{941101-1.c, 941110-1.c}: New tests.
	* gcc.c-torture/execute/{941202-1.c, arith-1.c}: New tests.
	* gcc.c-torture/execute/{arith-rand.c, complex-3.c}: New tests.
	* gcc.c-torture/execute/{inst-check.c, loop-1.c}: New tests.
	* gcc.c-torture/execute/{memcpy-1.c, va-arg-2.c}: New tests.

	* gcc.c-torture/execute/920302-1.c: Use void * instead of long for
	storing label pointers.
	* gcc.c-torture/execute/921019-1.c: Likewise.
	* gcc.c-torture/execute/920501-8.c: Add prototype for sprintf.
	* gcc.c-torture/execute/930513-1.c: Provide full declaration for
	parameter fp.
	* gcc.c-torture/execute/va-arg-1.c (main): Add L suffix to all
	constants.

	* gcc.c-torture/compile/{920501-14.c, 931127-1.c}:
	Delete obsolete tests.

	* gcc.c-torture/compile/{940409-1.c, 940718-1.c}: New tests.
	* gcc.c-torture/compile/{941014-1.c, 941014-2.c}: New tests.
	* gcc.c-torture/compile/{941014-3.c, 941014-4.c}: New tests.
	* gcc.c-torture/compile/{941019-1.c, 941111-1.c}: New tests.
	* gcc.c-torture/compile/{941113-1.c, 950122-1.c}: New tests.
	* gcc.c-torture/compile/950124-1.c: New test.

	* gcc.c-torture/compile/920902-1.c: Delete 2:nd parameter.

Wed Feb  8 15:30:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* lib/mike-g++.exp: Add -lm to LIBS.

Tue Feb  7 17:09:50 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/c-torture.exp (c-torture): Allow relative pathname in $srcdir.

Mon Jan 30 14:33:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>

	* lib/mike-g++.exp: Add -lstdc++ to LIBS.

Thu Jan 12 16:41:34 1995  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.misc-tests/dg-test.exp: Only run if $DG_TEST=yes.

Mon Jan  2 11:50:10 1995  Jeff Law  (law@snake.cs.utah.edu)

	* g++.law/{arg9.C, arg10.C, arg11.C, arm15.C, arm16.C}: New tests.
	* g++.law/{bad-error3.C, bad-error4.C, bad-error5.C}: Likewise.
	* g++.law/{bad-error6.C, bad-error7.C}: Likewise.
	* g++.law/{bit-fields3.C, casts2.C, casts3.C}: Likewise.
	* g++.law/{enum8.C, enum9.C, friend5.C}: Likewise.
	* g++.law/{nest2.C, nest3.C, nest4.C, nest5.C}: Likewise.
	* g++.law/{nest6.C, next7.C, operators30.C}: Likewise.
	* g++.law/{operators31.C, operators32.C, 
	* g++.law/{operators33.C, operators34.C}: Likewise.
	* g++.law/{pic1.C, refs2.C}: Likewise.
	* g++.law/{refs3.C, refs4.C, static-mem3.C}: Likewise.
	* g++.law/{static-mem4.C, static-mem5.C, typeck4.C}: Likewise.
	* g++.law/{vbase1.C, visibility27.C, visibility28.C}: Likewise.
	* g++.law/{vtable2.exp, vtable3.exp}: Likewise.

	* g++.law/{arg9.exp, arg10.exp, arg11.exp, arm15.exp}: Run them.
	* g++.law/{arm16.exp, bad-error3.exp, bad-error4.exp: Likewise.
	* g++.law/{bad-error5.exp, bad-error6.exp}: Likewise.
	* g++.law/{bad-error7.exp, bit-fields3.exp}: Likewise.
	* g++.law/{casts2.exp, casts3.exp, enum8.exp}: Likewise.
	* g++.law/{enum9.exp, friend5.exp}: Likewise.
	* g++.law/{nest3.exp, nest4.exp}: Likewise.
	* g++.law/{nest5.exp, nest6.exp, nest7.exp}: Likewise.
	* g++.law/{operators30.exp, operators31.exp}: Likewise.
	* g++.law/{operators32.exp, operators33.exp}: Likewise. 
	* g++.law/{operators34.exp}: Likewise.
	* g++.law/{pic1.exp, refs2.exp, refs3.exp refs4.exp}: Likewise.
	* g++.law/{static-mem3.exp, static-mem4.exp}: Likewise.
	* g++.law/{static-mem5.exp, typeck4.exp, vbase1.exp}: Likewise.
	* g++.law/{visibility27.exp, visibility28.exp}: Likewise.
	* g++.law/{vtable2.exp, vtable3.exp}: Likewise.

	* g++.law/{union4.exp, visibility17.exp}: Fix expected output.
	No longer expected to fail.
	* g++.law/missed-error3.C: Tweak for recent bool changes.

Sun Dec  4 20:54:33 1994  Doug Evans  <dje@canuck.cygnus.com>

	* config/emb-unix: Deleted.
	* config/unix.exp (${tool}_load): Use new proc rsh_exec to perform
	remote execution.  Do final link on remote host if REMOTE_LINK is set.

Thu Dec  1 08:43:05 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-test): Fix typo in last patch.

Wed Nov 30 13:25:32 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-test): Fix pattern that searches for expected output
	(handles multiple occurrences).

Thu Nov 24 19:48:38 1994  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.c-torture/*/*.exp: Pass full pathname to c-torture.
	* gcc.c-torture/execute/execute.exp (c-torture-execute): Remove
	$srcdir from pathname in pass/fail messages (but ensure $subdir *is*
	printed).
	* lib/c-torture.exp (c-torture-compile): Likewise.
	(c-torture): Prepend full path if missing.
	* lib/gcc.exp (gcc_pass): Pass entire pathname of testcase.
	(gcc_fail): Likewise.
	* lib/dg.exp (dg-test): Don't delete $subdir from pathname in messages.

Wed Nov 23 13:56:00 1994  J.T. Conklin  <jtc@rtl.cygnus.com>

	* lib/netware.exp: Only attach to NetWare i386 systems.

Wed Nov 16 11:27:00 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-test): Don't print $subdir (or above) in pass/fail
	messages.  Add test name to "output pattern match" pass/fail message.

Sat Nov 12 22:11:52 1994  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.dg: New testsuite.
	* gcc.dg/dg.exp: New file.

	* gcc.misc-tests/{misc.exp,inst-check.c,test-ior.c,test-consts.c,
	test-switch.c}: Deleted.

	* gcc.misc-tests/msgs.exp: New testcase driver.

Wed Nov  9 14:23:09 1994  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.c-torture/execute/execute.exp (c-torture_execute): New proc.
	Watch for illegal return values from ${tool}_load.
	* config/unix.exp (${tool}_load): Fix pass/fail detection for
	cross targets.  Coerce return value >0 to 1.

Tue Nov  8 14:10:33 1994  Doug Evans  <dje@canuck.cygnus.com>

	* config/unix.exp (${tool}_load): Call program rsh, not proc.

	* config/emb-unix.exp: New file.

	* config/sim.exp: Error if variable $SIM not defined.
	(${tool}_load): Mark test as "untested" if simulator missing.

	* config/unix.exp: Load remote.exp to get rcp_download.
	* lib/c-torture.exp: Use different option lists for testcases with
	and without loops.
	* gcc.c-torture/execute/execute.exp: Likewise.

Wed Nov  2 14:47:58 1994  Doug Evans  <dje@canuck.cygnus.com>

	* config/*.exp: Clarify return code from ${tool}_load.
	Call `unresolved' or `untested' instead of `warning' or `perror'
	(sometimes you still want to call both though).
	Add comment that `shell_id' is local to each file.
	* config/udi.exp (timeout): Set to 30.
	Don't print warning if connection fails, $connectmode has already
	printed an error.
	(${tool}_load): Move verbose messages to level 2.
	Rework pattern for "Process started" message.
	Pass `shell_id' to ${connectmode}_download.
	Retry twice upon timeout.  Make resetting of target more robust.
	(${tool}_exit): Remove /tmp/soc_name. if connected ok (bug in mondfe).
	Pass `shell_id' to exit_$connectmode.
	Only call exit_$connectmode if connected.
	* config/unix.exp (${tool}_load): Check return codes better.
	* config/vrtx.exp (${tool}_load): Likewise.
	* config/vx.exp (${tool}_load): Likewise.
	Delete unneeded global's.
	* lib/dg.exp (dg-test): Update to reflect clarified return codes
	from ${tool}_load.
	(dg-stat): Delete.
	(dg-init): Delete recording of pass/fail counts.
	* lib/old-dejagnu.exp (old-dejagnu): Likewise.
	(old-dejagnu-init): Likewise.
	(old-dejagnu-stat): Delete contents, empty proc now.
	* lib/c-torture.exp (TORTURE_OPTIONS): New global.
	(c-torture): Delete references to lcnt, lpass, lfail.
	Get option list from TORTURE_OPTIONS.
	Delete -funroll[-all]-loops if no loops.
	* lib/g++.exp (g++_init): Delete references to lcnt, lpass, lfail.
	(g++_stat): Delete contents (empty proc now).
	* lib/gcc.exp (gcc_init): Delete references to pass/fail counts.
	(gcc_finish): Likewise.
	(gcc_stat): Deleted.
	* lib/mike-gcc.exp (postbase): Delete references to lcnt, lpass, lfail.
	* gcc.*/*.exp: Delete calls to gcc_stat, dg-stat.
	* gcc.c-torture/execute/execute.exp: Likewise.
	Split tests into two parts: compile, execute.
	Get option list from TORTURE_OPTIONS.  Delete -funroll[-all]-loops if
	no loops.  Update to reflect clarified return codes from ${tool}_load.

Fri Oct 21 23:10:16 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/old-dejagnu.exp (process-option): Append ".*" to pattern
	to grep for.
	(old-dejagnu): Likewise (where necessary).

Fri Oct 14 17:54:58 1994  Doug Evans  <dje@canuck.cygnus.com>

	* gcc.misc-tests/gcov.exp: New file, for gcov testing.

	* lib/dg.exp (dg-process-target): Fix processing of selector.
	Add comment regarding use of `error'.

	* lib/gcc.exp (prune_system_crud): Define if missing.
	* lib/g++.exp (prune_system_crud): Likewise.

	* lib/{c-torture.exp,dg.exp,mike-g++.exp,old-dejagnu.exp}:
	Call prune_system_crud.
	* lib/dg.exp (dg-runtest): New proc.
	Use perror instead of send_user for tcl errors in testcase.
	Don't return any value, it's never used.
	Don't clobber previous definition of `unknown'.
	Print tcl errors in `dg-final'.

Wed Oct 12 13:05:37 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-process-target): Improve syntax error messages.
	(dg-test): Don't print errorInfo, it contains stack backtrace.

Mon Sep 26 12:18:53 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/g++.exp (runtest_file_p): Define if missing.

Sat Sep 24 15:29:23 1994  Doug Evans  (dje@cygnus.com)

	* lib/mike-g++.exp: Comment out loading of g++.exp.
	* lib/g++.exp: Update copyright.  Test for existence of $CXX at start.
	(default_g++_version): Always print something.
	(default_g++_start): Comment out call to `which'.
	(g++_start, g++_load): Deleted (must be defined in config file).
	* lib/gcc.exp: Test for existence of $CC at start.
	Delete check for tmpdir (done in gcc_init).
	(default_gcc_version): Always print something.
	(default_gcc_start): Comment out call to `which'.
	* config/*.exp: Major cleanup - make cross targets work at least a
	little better for g++ (by not being "--tool gcc" specific).
	Rename gcc_xxx to ${tool}_xxx.
	* g++.old-deja/old-deja.exp: utils.exp is loaded by runtest.exp.
	* lib/old-dejagnu.exp: ${tool}.exp is loaded by config file.

Thu Sep 22 11:39:17 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/c-torture.exp (c-torture-compile): Rework compiler
	message processing.

	* gcc.c-torture/compile/initbug1.{c,exp}: Deleted, not part of
	c-torture.

Wed Sep 21 09:49:43 1994  Doug Evans  (dje@canuck.cygnus.com)

	* gcc.wendy/wendy.dis: Renamed from wendy.exp to disable the testsuite.

	* lib/dg.exp (dg-process-target): Support { target native }.

Tue Sep 20 17:16:55 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/dg.exp (dg-test): Clean up some comments.  Delete code that
	looked for "... program xxx got fatal signal".
	Correct regsub munging of `comp_output'.
	Ignore compiler messages "path prefix not used" and "linker input
	file unused".

Wed Sep 14 11:44:40 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/gcc.exp (runtest_file_p): Define if missing.
	* gcc.prms/template.c: Example to work from.

Tue Sep 13 10:30:48 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/gcc.exp (gcc_finish): Delete code to update `testcnt'.
	* lib/dg.exp (dg-test): Call unsupported testcases as such.

	* gcc.prms/{3324.c,3565.c}: Moved from compile/940713-[12].c.
	* gcc.prms/1883.c: Moved from compile/940714-1.c.
	* gcc.prms/{5012.c,4453.c,4723.c,2541.c}: Moved from
	execute/{940712-1.c,940712-2.c,940713-1.c,940714-1,c}.

	* lib/dg.exp (user option docs): Clean up docs on target/xfail option.
	(dg-process-target): No longer a varargs proc.
	Return S/N for target, P/F for xfail.  All callers changed.
	(user option procs): More argument checking.
	(dg-do): `dg-do-what' now contains 3 elements {what flag P/F}.
	(dg-output): `dg-output-text' now contains 2 elements {P/F text}.
	(dg-test): Skip test if not running on selected target in `dg-do'.
	Update handling of `dg-do-what', `dg-output-text'.
	Separate execution pass/fail from output pattern match pass/fail.
	Delete BUILD/XBUILD support (duplicate of LOSE/XLOSE).

Mon Sep 12 13:47:35 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* gcc.c-torture/special/special.exp: Don't expect failure for mips
	target for 920510-1.c.

Mon Sep 12 12:44:39 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/gcc.exp (gcc_init): Move initialized message to verbose level 3.
	Clean up comment regarding use of passcnt, etc.
	(gcc_stat): Don't update `testcnt' here.
	(gcc_finish): Do it here.
	Might as well reset `but_id' here too.
	* gcc.c-torture/code_quality/code_quality.exp: Call `runtest_file_p'
	to determine if the file should be tested.
	* gcc.c-torture/compile/compile.exp: Likewise.
	* gcc.c-torture/execute/execute.exp: Likewise.
	* gcc.c-torture/unsorted/unsorted.exp: Likewise.
	* gcc.misc-tests/dg-test.exp: Likewise.
	* gcc.prms/prms.exp: Likewise.
	* gcc.wendy/wendy.exp: Likewise.
	* g++.old-deja.exp: Likewise.
	Move "Testing file" message to verbose level 1.

Fri Sep  9 10:21:18 1994  Doug Evans  (dje@canuck.cygnus.com)

	* gcc.wendy/t.c: Add DEJAGNU_CFLAGS:"-DNOPAUSE".

Thu Sep  8 16:52:43 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/gcc.exp: Ensure CFLAGS, LIBS, and LDFLAGS are set.
	(default_gcc_start): Accept optional second list element
	of compiler flags.  Print compiler output at verbosity level 2.
	Remove setting of CFLAGS, LIBS, LDFLAGS from here.
	(gcc_init): Delete globals lcnt, lpass, lfail, lxpass, lxfail.
	Save current values of framework globals passcnt, failcnt, xpasscnt,
	and xfailcnt in gcc_passcnt, gcc_failcnt, gcc_xpasscnt, and
	gcc_xfailcnt.  Set global `tmpdir' to /tmp if it doesn't exist.
	(gcc_stat): Use framework globals passcnt, failcnt, xpasscnt, and
	xfailcnt to compute stats.  Update framework global `testcnt' from
	pass/fail counts.
	(gcc_finish): New proc.  Clean up test environment.
	(gcc_cpass, gcc_cfail): Rename to gcc_pass/gcc_fail.
	(gcc_epass, gcc_efail): Delete.
	* lib/dg.exp (dg-error, dg-warning, dg-bogus): Accept optional 5th
	argument of line number.
	(dg-init): If the tool has an init routine, call it.
	(dg-test): Remove args `cflags_var' and `libs_var'.
	Pass all compiler options to ${tool}_start.
	Handle missing line number.
	(dg-finish): New function.
	* gcc.c-torture/code_quality/code_quality.exp: Add support for testing
	particular files.  Call gcc_finish at end.  Move "skipping test"
	message to verbosity level 3.
	* gcc.c-torture/compile/compile.exp: Likewise.
	* gcc.c-torture/unsorted/unsorted.exp: Likewise.
	* gcc.c-torture/execute/execute.exp: Likewise.
	Delete setting of prms_id, bug_id, lcnt, lfail, lpass.
	Print testcase being tried at verbosity level 1.
	* gcc.c-torture/special/special.exp: Unset xfail.
	Delete setting of prms_id, bug_id, lcnt, lfail, lpass.
	* gcc.c-torture/compile/initbug1.exp: Call gcc_finish.
	* gcc.c-torture/noncompile/noncompile.exp: Likewise.
	* gcc.failure/failure.exp: Likewise.
	* gcc.ieee/ieee.exp: Likewise.
	* gcc.misc-tests/dg-test.exp: Delete LDFLAGS.
	Update call to dg-test.  Call dg-finish at end.
	* gcc.misc-tests/mg.exp: Call gcc_finish at end.  Unset orig_flags.
	Delete setting of prms_id, bug_id, lcnt, lfail, lpass.
	* gcc.misc-tests/misc.exp: Call gcc_finish at end.
	* gcc.prms/prms.exp: Delete loading of utils.exp (redundant).
	Delete LDFLAGS.  Update call to dg-test.  Call dg-finish at end.
	* gcc.wendy/wendy.exp: Add copyright.
	Delete setting of tmpdir (done by gcc_init).
	Call gcc_pass/gcc_fail instead of gcc_[ce]pass/fail.
	Pass compiler flags to gcc_start.  Call gcc_finish at end.
	* lib/c-torture.exp: Call gcc_pass/gcc_fail instead of
	gcc_[ce]pass/fail.

Wed Sep  7 11:09:08 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/g++.exp (g++_start): Rename arg to `prog' to avoid varargs
	confusion.
	(g++_load): Likewise.

	* config/*.exp (gcc_load): Some were varargs fns and some were not.
	Rename argument to `prog' to remove the confusion.
	Varargs fns behave differently too!
	(g++_load): Likewise.

	* lib/dg.exp (dg-stat): Correct calculation of npass, nfail.

	* config/unix.exp (gcc_load): Rename `args' to `prog' because that's
	what it is.  Delete (always) printing of status value for !native.
	Simplify verbose code, and include status and exec_output.
	(g++_load): Use gcc_load.

Sun Sep  4 13:59:27 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* gcc.c-torture/noncompile/920928-1.c: Delete obsolete file.
	* gcc.c-torture/noncompile/noncompile.exp: Delete support for
	920928-1.c, 921017-1.c, 940712-1.c, 940714-1.c, 940714-2.c,
	940714-3.c as these testcases don't exist anymore.  Make
	va-arg-1.c expected to pass.

Fri Aug 19 12:27:07 1994  Doug Evans  (dje@canuck.cygnus.com)

	* gcc.misc-tests/misc.exp: Only run specific testcases.
	* gcc.misc-tests/dg-test.exp: New file.  Tests dg.exp.
	* gcc.misc-tests/dg-[1-9].c: New files.

	* lib/dg.exp: New testsuite driver.
	* gcc.prms/prms.exp: Use it.

	* README.gcc: New file.

	* lib/gcc.exp (gcc_init): Delete srcdir, no longer referenced.
	Document and reset `lxpass' and `lxfail'.
	Simplify "initialized" message.
	(gcc_stat): Clean up comments a little.

Tue Aug 16 11:16:46 1994  Doug Evans  (dje@canuck.cygnus.com)

	* gcc.prms/prms.exp: New driver for gcc.prms testsuite directory.

Mon Aug 15 21:20:36 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/old-dejagnu.exp (process-option): New proc.
	(old-dejagnu-init, old-dejagnu-stat): Likewise.
	(old-dejagnu): Simplify.
	* g++.old-deja/old-deja.exp: Update to new version of old-dejagnu.

Sun Aug 14 09:23:53 1994  Jeff Law  (law@snake.cs.utah.edu)

	* lib/c-torture.exp (c-torture): Only call setup_xfail if $xfail
	exists and is not an empty string.

	* gcc.c-torture/special/special.exp (920520-1.c, 930510-1): Set
	$xfail rather than calling setup_xfail.  Clear $xfail when test is
	finished.
	(920717-x.c): Add $srcdir/$subdir as "gcc_start" does not do it
	automatically.

	* gcc.c-torture/noncompile/noncompile.exp (940712-1 test): No
	longer expected to fail.

	* gcc.c-torture/execute/strct-pack-3.c: Add missing argument to 
	"f" function call.

	* gcc.misc-tests/mg.exp: Call gcc_stat when finished.

	* gcc.c-torture/execute/{920202-1.c, 931208-1.c, 931228-1.c,
	940115-1.c, 940122-1.c, bf-pack-1.c, bf64-1.c, comp-goto-1.c,
	complex-2.c, packed-1.c, strct-pack-2.c	strct-pack-3.c,
	struct-ini-2.c, struct-ini-3.c, va-arg-1.c}: Import from
	c-torture-1.29.

	* gcc.c-torture/execute/{nest-stdar-1.c, struct-ini-1.c,
	strct-pack-1.c, strct-varg-1.c}: Renamed to match c-torture-1.29.

	* gcc.c-torture/execute/920612-2.c: Update to c-torture-1.29.

	* gcc.c-torture/noncompile/{931203-1.c, 940112-1.c, 940227-1.c,
	940510-1.c, init-1.c, init-2.c}: Import from c-torture-1.29

	* gcc.c-torture/compile/{920928-6.c, 931203-1.c, 940611-1.c,
	940712-1.c, calls.c, combine-hang.c, goto-1.c, init-2.c,
	labels-1.c, packed-1.c, zero-strct-1.c}: Import from c-torture-1.29.

Tue Jul 12 12:49:44 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gcc.execute/{940712-1.c, 940712-2.c, 940713-1.c, 940714-1.c},
	gcc.noncompile/{940712-1.h, 940712-1a.h, 940712-1b.h, 940712-1.c,
	940714-1.c, 940714-2.c, 940714-3.c},
	gcc.compile/{940713-1.c, 940713-2.c, 940714-1.c},
	gcc.misc-tests/{mg.c,mg.exp}:
	New tests.
	* gcc.noncompile/noncompile.exp: Change accordingly.

Thu Jul  7 14:20:33 1994  Doug Evans  (dje@canuck.cygnus.com)

	* config/sim.exp, lib/c-torture.exp, lib/gcc.exp:
	Undo previous clobberage.

Mon Jul  4 17:00:59 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gcc.compile/{931102-1.c, 931102-2.c, 931031-1.c}:
	* gcc.special/{930510-1.c, special.exp}:
	* gcc.execute/{931031-1.c, 931110-1.c, 931110-2.c, 931102-1.c,
	931102-2.c, struct-pack-1.c, divmod-1.c, complex-1.c,
	struct-varargs-1.c}: New tests from c-torture-1.26.

Tue Jun 28 17:39:42 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* gcc.wendy/wendy.exp: add --'s so that -1 isn't parsed as an
	  argument to switch.

Sat May 21 10:39:38 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Revert the previous changes.  Please see Rob's directory
	  (/lisa/test/rob/progressive/gcc/testsuite) for testing
	  fixes.

Thu May 19 18:00:03 1994  Bill Cox  (bill@rtl.cygnus.com)

	* config/sim.exp, config/udi.exp, config/unix.exp, config/vx.exp, 
          g++.brendan/alignof.exp, g++.brendan/arm3.exp, g++.brendan/code-gen5.exp,
          g++.brendan/crash29.exp, g++.brendan/crash5.exp, g++.brendan/cvt3.exp,
          g++.brendan/delete1.exp, g++.brendan/nest12.exp, g++.brendan/nest13.exp,
          g++.brendan/overload3.exp, g++.brendan/redecl1.exp, g++.brendan/visibility2.exp,
          g++.jason/cond.exp, g++.jason/hmc1.exp, g++.jason/report.exp,
          g++.law/access1.exp, g++.law/access2.exp, g++.law/arg6.exp, 
          g++.law/arg7.exp, g++.law/arg8.exp, g++.law/arm1.exp, 
          g++.law/arm10.exp, g++.law/arm4.exp, g++.law/arm5.exp,
          g++.law/ctors15.exp, g++.law/ctors19.exp, g++.law/cvt1.exp,
          g++.law/cvt12.exp, g++.law/cvt13.exp, g++.law/cvt18.exp, 
          g++.law/cvt22.exp, g++.law/cvt3.exp, g++.law/cvt5.exp, 
          g++.law/cvt6.exp, g++.law/cvt8.exp, g++.law/dtors3.exp, 
          g++.law/except1.exp, g++.law/except3.exp, g++.law/except4.exp,
          g++.law/except5.exp, g++.law/except6.exp, g++.law/init5.exp, 
          g++.law/init8.exp, g++.law/inline4.exp, g++.law/memoized1.exp,
          g++.law/missing1.exp, g++.law/operators14.exp, g++.law/operators18.exp,
          g++.law/operators9.exp, g++.law/scope2.exp, g++.law/temps2.exp,
          g++.law/temps3.exp, g++.law/temps5.exp, g++.law/typeck2.exp, 
          g++.mike/misc4.exp, g++.mike/misc6.exp, g++.niklas/t118.exp,
          g++.niklas/t128.exp, g++.niklas/t138.exp, g++.niklas/t139.exp,
          g++.niklas/t140.exp, g++.niklas/t141.exp, gcc.code_quality/code_quality.exp,
          gcc.compile/compile.exp, gcc.dje/dje.exp, gcc.execute/execute.exp, 
          gcc.failure/failure.exp, gcc.ieee/ieee.exp, gcc.noncompile/noncompile.exp,
          gcc.special/special.exp, gcc.unsorted/unsorted.exp, lib/c-torture.exp,
          lib/chill.exp, lib/g++.exp, lib/gcc.exp, lib/mike-g++.exp, lib/mike-gcc.exp,
          lib/old-dejagnu.exp: Checkin Rob's 94Q1 testing changes.

Tue May 17 14:55:09 1994  Bill Cox  (bill@rtl.cygnus.com)

	* config/udi.exp, gcc.execute/execute.exp, gcc.wendy/wendy.exp,
          lib/g++.exp, lib/old-dejagnu.exp: Replace error proc calls
	  with perror calls.

Mon May  2 17:41:13 1994  Jason Merrill  (jason@deneb.cygnus.com)

	* config/unix.exp (g++_load): Fix syntax.

Thu Apr 14 12:22:10 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* gcc.compile/initbug1.exp (CFLAGS): Add space at beginning.
	* gcc.noncompile/921017-1.c: Deleted obsolete test.
	* gcc.noncompile/noncompile.exp: Remove code for deleted test.
	Don't expect va-arg-1.c to fail.  Correct expected output for
	920928-1.c.
	* gcc.wendy/d.c, msgs.c, prolog.c, subs.c, z.c: Deleted.
	* gcc.wendy/hbm4.c: Correct typo.
	* gcc.wendy/tad1.c, tad2.c: Correct expected output.

Mon Mar 28 13:29:37 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/gcc.exp (gcc_[ce]{pass,fail}): Remove output/executable argument.
	* gcc.wendy/wendy.exp (wendy_try): Remove `output' argument of
	gcc_[ce]{pass,fail}.  Explicitly remove executable if test passes.
	* lib/c-torture.exp (c-torture-compile): Ditto.

	Reduce volume of output (remove all the -I's and such).
	* lib/c-torture.exp (c-torture-compile): New argument OPTION.
	Call gcc_cpass, gcc_cfail.
	(c-torture): Pass testing option to c-torture-compile.

Mon Mar 21 12:40:33 1994  Doug Evans  (dje@cygnus.com)

	Bring patches over from progressive.
	* config/default.exp: Exit remote shell cleanly.
	(g++_exit, g++_start): Add default versions.
	* config/sim.exp (gcc_load): Use perror, not error.

Sun Mar 20 12:05:32 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/gcc.exp: Don't set CFLAGS if CC not set.  It clobbers the	value
	set in site.exp.

Mon Mar 14 19:30:28 1994  Doug Evans  (dje@cygnus.com)

	* gcc.wendy/wendy.exp (wendy_first_line): New proc to fetch
	DEJAGNU_OUTPUT and DEJAGNU_CFLAGS.
	(wendy_try): New proc to run testcase.
	(main loop): Call 'em.
	* gcc.wendy/*.c: Clean up pass to correct expected output.

	* lib/gcc.exp: Minor cleanup work.
	(gcc_cpass, gcc_cfail, gcc_epass, gcc_efail): New procs.

Wed Mar  9 15:22:54 1994  Doug Evans  (dje@canuck.cygnus.com)

	* config/sim.exp (gcc_load): Document return codes better.
	Don't pass -v to simulator.

Thu Feb 24 07:15:18 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

        * gcc.special/920717-x.c: Fix typo.
        * gcc.special/special.exp (920717-x.c): Use $srcdir/$subdir to
        get at sources.

	* lib/mike-gcc.exp: Fix typo.

Tue Feb 15 15:41:47 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/gcc.exp: Minor cleanup work. Find the proper gcc or g++
	binary to use, transform the name.
	* config/*.exp: rename everything. Nuke any g++ specific files,
	it's now a special case of gcc that requires no special support.
	Add a default.exp for unsupported targets.

Fri Feb 11 12:59:54 1994  Rob Savoye  (rob@poseidon.cygnus.com)

	* g++.jason/report.exp, g++.old-deja/old-deja.exp,
	lib/old-dejagnu.exp: Fix a few patterns to work with the new
	version of Tcl.

Wed Feb  9 21:35:47 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/c-torture.exp: Made "file prefix*never used a pass, rather
	than a warning.

Sun Feb  6 16:52:13 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* lib/mike-gcc.exp: Add in recent changes from mike-g++.exp.

Mon Jan  3 17:28:25 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)

	* gcc.execute/execute.exp: Combine opt_list and foption_list into
	option_list.  Compile every file with only 4/6 option choices
	(same as C torture) instead of with 12/18 different option
	choices.
	* lib/c-torture.exp: Likewise.

	* lib/gcc.exp: Set LIBS, CFLAGS, and LDFLAGS to empty strings if
	not already set.

Thu Dec 30 17:17:07 1993  Mike Stump  (mrs@rtl.cygnus.com)

	* lib/old-deja.exp: Add `excess errors test fails' error, now one
	can put an XFAIL *-*-* on excess errors.

Sun Dec 19 21:45:34 1993  Jeffrey A. Law  (law@snake.cs.utah.edu

	* g++.law: Add more tests derived from g++-bugs snapshots.

	* g++.law/init11.{c,exp}: Delete test.  Brendan sez it's 
	equivalent to g++.law/init9.

	* lib/mike-gcc.exp (postbase): Delete the .o file after we've
	compiled it, and the a.out file after we've run it.

Fri Dec 17 11:29:56 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* lib/mike-g++.exp (postbase): Delete the .o file after we've
	compiled it, and the a.out file after we've run it.

Fri Dec 17 10:18:16 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* g++.law/*.exp: Avoid losing arguments added via "append" commands.

Wed Dec 15 20:36:40 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/gcc.exp, lib/g++.exp: Use catch rather than exec to get the
	version number. 

Sun Dec 12 21:10:04 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* g++.law: New directory of g++ tests derived from the g++-bugs
	snapshots.

Thu Dec 09 16:50:41 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* gcc.compile: initbug1.c initbug1.exp testcase added

Mon Dec 06 11:09:52 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* gcc.dje/sizetype-1.exp, dje.exp: minor clean ups
	* gcc.execute/execute.exp: minor cleanups. added gcc_stat calls. added
	  fixes submitted by Jeff Law (law@cs.utah.edu)
	* gcc.noncompile/noncompile.exp, lib/mike-gcc.exp: new files from
	  Jeff Law (law@cs.utah.edu)


Tue Nov 30 16:34:07 1993  Mike Stump  (mrs@cygnus.com)

	* config/unix-g++.exp: Follow the gcc way of doing things.
	* g++.old-deja/old-deja.exp: Minor updates.
	* lib/g++.exp: New file, follow the gcc way of doing things.
	* lib/old-dejagnu.exp: Minor updates.
	* lib/mike-g++.exp: Always unset errorInfo.

Sat Nov  6 11:34:51 1993  Mike Stump  (mrs@cygnus.com)

	* lib/gcc.exp: Fix some errors with the below change, CC and
	CFLAGS should be global when setting, not local.

Wed Nov  3 11:16:26 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/gcc.exp: Transform tool name.

Wed Oct 27 23:57:29 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* gcc.*/*.exp: Fixd some de-stablizing changes. Sorry.

Wed Oct 27 14:45:50 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/gcc.exp: change gcc_done to gcc_stat

Wed Oct 27 09:57:51 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Upgraded gcc testsuite to c-torture version 1.25

Sun Oct 24 10:58:03 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/gcc.exp: added reporting code. Changed verbose compile message.
	* lib/c-torture: added hooks for new reporting code.

Thu Oct 21 18:45:32 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* config/sh-gcc.exp: check if sh-sim exists in the path

Mon Oct 18 11:13:22 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* gcc.code_quality/code_quality.exp: Initial changes for new logic.
	* gcc.compile/compile.exp: Initial changes for new logic.
	* gcc.dje/dje.exp, sizetype-1.exp: Initial changes for new logic.
	* gcc.failure/failure.exp: Initial changes for new logic.
	* gcc.ieee/ieee.exp: Initial changes for new logic.
	* gcc.misc-tests/misc.exp: Initial changes for new logic.
	* gcc.noncompile/non_compile.exp: Initial changes for new logic.
	* gcc.unsorted/unsorted.exp: Initial changes for new logic.
	* lib/c-torture.exp: Initial changes for new logic.
	* lib/gcc.exp: Initial changes for new logic.

Fri Oct 15 00:19:42 1993  Mike Stump  (mrs@cygnus.com)

	* lib/mike-g++.exp, lib/old-dejagnu.exp: Make the message not
	depend upon failure or success.  Fully qualify names in failure
	and success messages.  Always remove a.out before starting
	compile, just in case.  Pay more attention to error text output by
	the compiler.  Handle testcases with no known past errors just
	like all others, so that things are uniform.  Other miscellaneous
	improvements.

Wed Oct 13 15:04:51 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* gcc.cpp: new directory for cpp tests

Mon Oct  4 09:03:41 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/chill.exp: Code reformatted, removed unused code.
	* config/unix-chill.exp: Code reformatted, removed unused code.
	* chill.execute/execute.exp: Code reformatted, removed unused code.
	* chill.execute/oe/orient.exp: Code reformatted, removed unused code.

Mon Oct  4 06:19:26 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config/mips-gcc.exp, config/mips-g++.exp: New files.  Execution
	routines not written.

Mon Sep 27 21:07:44 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* config/bug-gcc.exp: Use new procs from bug.exp.

Tue Sep 21 18:21:12 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* config/vx-gcc.exp: Use new vxworks_ld proc, so files get loaded
	via ftp, rather than depending on NFS.
	* config/vx-gcc.exp: Use new vxworks_spawn proc to execute test
	case.

Thu Sep  9 23:09:15 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* config/bug-gcc.exp: Use new download proc.

Tue Sep 14 19:23:58 1993  Jeffrey Wheat  (cassidy at deneb.cygnus.com)

	* chill.execute/execute.exp: cleanups, handles errors better
	* chill.compile/compile.exp: rewrite, based on execute.exp
	* chill.noncompile/noncompile.exp: rewrite, based on execute.exp
	* lib/chill.exp: major changes to diff proc and compile and link
	  procs. added chill_fail and chill_pass wrappers to pass and
	  fail. added more comments, and handle error codes better. 
	  Added a hack to capture stderr from exec, so noncompile tests
	  can work.
	  
Sat Sep 11 15:30:10 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* chill.execute/execute.exp: rewrite of testsuite driver
	* lib/chill.exp: rewrite of testsuite driver
	* config/unix-chill.exp: rewrite of testsuite driver

Wed Aug 25 14:11:13 1993  Bill Cox  (bill@rtl.cygnus.com)

    In chill.execute:
	* iexpr.ch: Standardize uppercase.
	* tuples.dat: Standardize uppercase.
	* vary.ch: standardize.  Correct varying string assignments.
	* vary.dat: Add new output lines.

Tue Aug 24 13:45:49 1993  Bill Cox  (bill@rtl.cygnus.com)

    In chill.execute:
	* chprintf.ch: Standardize use of uppercase.
	* tuples.ch: Standardize and turn arr2 into a DCL,
	  rather than a SYN.
	* pinits.ch: Standardize.

Mon Aug 23 17:26:58 1993  Per Bothner  (bothner@kalessin.cygnus.com)

	* rts.c:  Get malloc() from <stdlib.h>, not <malloc.h>.
	* Makefil: Renamed to Makefile.in.
	* configure.in: New.

Mon Aug 23 14:24:13 1993  Bill Cox  (bill@rtl.cygnus.com)

    In chill.execute:
	* .cvsignore: Add result/output files.
	* Makefile: Fix up variables at start.  Use MFLAGS
	  everywhere.  Correct bool_loc, built_ins entries.
	  Add entry for vary1.ch.
	* bitarray.ch: Standardize upper-case usage.
	* bitexpr.ch: Standardize, add output of b1.
	* params.ch: Use arrayt in along PROC parameters, to
	  avoid novelty problems.
	* sets.ch: Tiny cleanup.
	* vary1.ch: Re-indent.

Tue Aug 17 15:42:07 1993  Bill Cox  (bill@rtl.cygnus.com)

        * Add PR-related files to Makefiles, .cvsignore files, etc.

Mon Aug  2 15:46:05 PDT 1993  Jeff Wheat  (cassidy@cygnus.com)

	* gcc.unsorted: flow.c and loop.c - renamed to avoid conflicts
	  with compiler objects. New names are test-flow.c and test-loop.c

Tue Jul 27 10:08:08 PDT 1993  Jeff Wheat  (cassidy@cygnus.com)

	* Upgraded c-torture tests from 1.19 to 1.20

	* new files:
	* gcc.compile: 930609-1.c 930611-1.c 930618-1.c 930621-1.c 
	* gcc.compile: 930623-1.c 930623-2.c 
	* gcc.noncompile: 930622-1.c 930622-2.c
	* gcc.failure: 920411-1.c 920627-2.c
	* gcc.ieee: 920518-1.c 920810-1.c 930529-1.c

Tue Jul 20 15:19:44 PDT 1993  Jeff Wheat  (cassidy@cygnus.com)

	* chill.compile/compile.exp chill.execute/execute.exp lib/chill.exp
	  More changes to get testsuite working properly. Needs more work.
	  Added some support for POSIX IEEE Std 1003.3-1991 error messages.

Mon Jul 19 18:40:31 PDT 1993  Jeff Wheat  (cassidy@cygnus.com)

	* chill.compile/compile.exp chill.execute/execute.exp lib/chill.exp
	  More changes to get testsuite working properly. Needs more work.

Tue Jul 13 18:38:56 PDT 1993 Jeff Wheat  (cassidy@cygnus.com)

	* chill.compile/compile.exp: Added for Dejagnu support
	* chill.execute/execute.exp: Added for Dejagnu support
	* lib/chill.exp config/unix-chill.exp  : Added for Dejagnu support

Sat Jun 19 07:13:05 1993  Bill Cox  (bill@rtl.cygnus.com)

    This should complete moving the CHILL test files.
	* chill.noncompile(.cvsignore printf.grt 
          in-printf.grt chprintf.grt chprintf.ch):
          Added test-support files.
	  (Makefile): Modified further.
	* chill.compile (emptymod.ch gdbme.ch neg_range.ch
          signal.ch): Added test files.
        * chill.execute (.cvsignore printf.grt printr.c
          in-printf.grt rts.c chprintf.grt rts.h): Added
	  test-support files.
          (Makefile): More corrections.

Fri Jun 18 23:40:54 1993  Bill Cox  (bill@rtl.cygnus.com)

	* chill.compile, chill.execute, chill.nocompile: Add CHILL
	  test cases, ready for DejaGnu.

Thu Jun 17 19:14:40 MDT 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Upgraded c-torture tests from 1.18 to 1.19

	* gcc.compile: added test(s):
	  930607-1.c
	* gcc.execute: added test(s):
	  930603-1.c 930603-2.c 930603-3.c 930608-1.c conversion.c inst-check.c

	* added new subdirectory for misc tests: gcc.misc-tests
	* gcc.misc-test(s): added tests:
	  inst-check.c test-consts.c test-ior.c test-switch.c

Wed Jun  9 16:53:26 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* lib/mike-g++.exp: Load `./a.out', not `a.out'.

Mon Jun  7 16:18:40 1993  Ian Lance Taylor  (ian@cygnus.com)

	* g++.old-deja/old-deja.exp: Don't delete all the .o files.

Thu Jun  3 13:13:36 MDT 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Upgraded c-torture tests from 1.17 to 1.18

Wed Jun  2 19:02:40 MDT 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* Upgraded c-torture tests from 1.12 to 1.17

Fri Apr 30 09:38:41 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/old-dejagnu.exp:
	  Fixed handling of XFAIL target triplets to correctly
	  recognize wildcard characters.  Removed code that
	  appended a unique id tag to the end of the file name
	  printed out by the result of the testcases within a
	  given test file.

Thu Apr 29 19:06:29 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/old-dejagnu.exp:
	  Reworked expected failure handling to trigger off of XFAIL
	  keyword in keyphrase embeded in testcase source code. The
	  XFAIL keyword must be at the end of the keyphrase line. It
	  may optionally be followed by one or more target triplets.
	  It has just occured that the handling of wildcards in the
	  target triplet may not be correct.

Fri Apr 23 13:16:20 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* g++.old-deja/tests:
	  Moved all subdirectories up one level into g++.old-deja .

	* lib/old-dejagnu.exp:
	  Fixed problem with CXXFLAGS not being properly reset, and being
	  corrupted with extraneous "-c" compiler option.  This was
	  causing binaries to not be generated for test that needed them.
	  Modified strings passed to "pass" and "fail" so that individual
	  tests from the same test file would be distinguished by an
	  identifier appended to the test file name in the summary logs;
	  this corrected a problem with erroneous diff logs.  Added code
	  to search testcases for expected fail and unexpected pass keywords.

Tue Apr 20 18:27:58 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/c-torture.exp: Ignore "file path prefix*unused" message.

Thu Apr 15 11:01:59 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* g++.old-deja/tests/g++.sun/g++.frag/1045608.C:
	  Removed extraneous text from end of "Special g++ Options"
	  keyphrase.

	* lib/old-dejagnu.exp: Added pattern matching to look for new
	  keywords, embedded in testcases comments, which will trigger
	  calls to xpass and xfail.

Wed Apr 14 14:28:01 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/old-dejagnu.exp: Cleaned up pattern matching for keyphrase
	  comments embedded in the testcases, especially the one looking for
	  special compiler options, as well as the pattern matching for the
	  compiler output again.

Mon Apr 12 15:15:37 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/old-dejagnu.exp: Do a proper check of the return value for
	  execute tests. Fixed several problems with the pattern matching
	  of the compiler output which gave erroneous test results.
	  Changed several of the test result messages to be more descriptive.
	* config/unix-g++.exp: Proc g++_load now actually works and
	  executes the tests passed to it and returns a usable return
	  value. 

Sun Apr 11 17:22:37 1993  Rob Savoye  (rob at darkstar.cygnus.com)

        * lib/gcc.exp: Exits gracefully if $CC is bogus.

Fri Apr  9 09:41:59 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/old-dejagnu.exp , g++.old-deja/old-deja.exp:
	  Modified both files to properly execute the old style
	  dejagnu tests. The previous versions of these files were
	  experimental and did not function anything near correctly.

Mon Apr  5 21:08:24 1993  Rob Savoye  (rob@cygnus.com)

	* Removed all Makefile.in and configure.in files. No configuration
	needed now.

Fri Apr  2 12:15:17 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib: relocated old-dejagnu.exp from devo/dejagnu/lib

Sun Mar 28 11:17:48 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* gcc.compile/configure.in, gcc.unsorted/configure.in,
	gcc.special/configure.in, gcc.noncompile/configure.in,
	gcc.execute/configure.in, gcc.code_quality/configure.in,
	g++.other/configure.in, g++.old-deja/configure.in,
	g++.niklas/configure.in, g++.mike/configure.in: Remove extra quote
	in srcname setting.

Thu Mar 25 20:07:55 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/udi.exp:  Fixed mondfe and mondfe_download.
	* config/udi-gcc.exp: Fixed misc bugs, works with expect 4.x.
	* config/abug-gcc.exp: Fixed misc bugs, works with expect 4.x.

Thu Mar 25 13:06:41 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config/udi-gdb.exp: Check $shell_id after connecting to target.
	(gdb_exit): Don't remove *_soc files.

Mon Mar 22 14:28:46 1993  Ian Lance Taylor  (ian@cygnus.com)

	* lib/c-torture.exp: Don't look for main; instead always use -w
	-c.  This is how the c-torture tests work.  Remove the object
	file if the compilation succeeds.
	* gcc.execute/execute.exp: Remove executable if test passes.
	* gcc.noncompile/noncompile.exp: Every test is an expected
	failure.
	* gcc.special/special.exp: Added tests from c-torture 1.11,
	corrected use of existing test.
	* gcc.execute/920302-1.c, gcc.execute/920501-8.c,
	gcc.execute/920625-1.c: Updated to c-torture 1.11.
	* gcc.compile/921103-1.c, gcc.compile/921109-1.c,
	gcc.compile/921109-2.c, gcc.compile/921109-3.c,
	gcc.compile/921111-1.c, gcc.compile/921116-2.c,
	gcc.compile/921118-1.c, gcc.compile/921126-1.c,
	gcc.compile/921202-1.c, gcc.compile/921202-2.c,
	gcc.compile/921203-1.c, gcc.compile/921203-2.c,
	gcc.compile/921206-1.c, gcc.execute/921029-1.c,
	gcc.execute/921104-1.c, gcc.execute/921110-1.c,
	gcc.execute/921112-1.c, gcc.execute/921113-1.c,
	gcc.execute/921117-1.c, gcc.execute/921123-1.c,
	gcc.execute/921123-2.c, gcc.execute/921124-1.c,
	gcc.execute/921202-1.c, gcc.execute/921202-2.c,
	gcc.execute/921204-1.c, gcc.execute/921207-1.c,
	gcc.execute/921208-1.c, gcc.execute/921208-2.c,
	gcc.execute/921215-1.c, gcc.execute/921218-1.c,
	gcc.execute/921218-2.c, gcc.noncompile/921102-1.c,
	gcc.noncompile/921116-1.c, gcc.unsorted/x.c: Added from
	c-torture 1.11.
	* gcc.noncompile/921021-1.c, gcc.unsorted/x11bug.c: Removed to
	correspond to c-torture	1.11.

	* New file.

