This is a collection of tests for GCC. For further information about
the C testsuite, see README.gcc.

The driver that runs this testsuite is called DejaGnu and you will
need a current DejaGnu snapshot, which is available from
https://gcc.gnu.org/pub/gcc/infrastructure, for example.

These tests are included "as is". If any of them fails, do not report
a bug.  Bug reports for DejaGnu can go to bug-dejagnu@gnu.org.
Discussion and comments about this testsuite should be sent to
gcc@gcc.gnu.org; additions and changes should be sent to
gcc-patches@gcc.gnu.org.

The entire testsuite is invoked by `make check` at the top level of
the GCC tree. `make check-g++` runs the C++ testsuite only.

STRUCTURE OF THE G++ TESTSUITE

  g++.dg tests:

  All new tests should be placed in an appropriate subdirectory of g++.dg.

  g++.old-deja tests:

  g++.benjamin	Tests by Benjamin Koz
  g++.bob
  g++.brendan	Tests by Brendan Kehoe
  g++.bugs
  g++.eh  	Tests for exception handling
  g++.ext  	Tests for g++ extensions
  g++.gb  	Tests by Gerald Baumgartner
  g++.jason	Tests by Jason Merill
  g++.jeff	Tests by Jeffrey A Law
  g++.martin	Tests by Martin v. Löwis
  g++.mike	Tests by Mike Stump
  g++.niklas	Tests by Niklas Hallqvist
  g++.ns  	Tests for namespaces
  g++.other
  g++.pt  	Tests for templates
  g++.rfg
  g++.robertl	Tests from gcc-bugs@gcc.gnu.org, gathered by Robert Lipe
	
Finally, some random last minute notes by Mike Stump <mrs@cygnus.com>, on
how to run tests (in the GCC 2.7 era):

	runtest --tool g++ --srcdir ./testsuite

where 

	runtest	Is the name used to invoke DejaGnu.   If DejaGnu is not
		installed this will be the relative path name for runtest.

	--tool	This tells DejaGnu which tool you are testing. It is
		mainly used to find the testsuite directories for a
		particular tool when several testsuites are in the
		same directory. (like the gcc and g++ testsuites)

	--srcdir This points to the top level of the directory
		containing the sources of the testsuite. This is
		./testsuite if you are in the directory that has the
		testsuite directory.


Copyright (C) 1998-2022 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
