summaryrefslogtreecommitdiff
path: root/gcc/testsuite/README.compat
diff options
context:
space:
mode:
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2002-10-18 00:22:58 +0000
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2002-10-18 00:22:58 +0000
commita22c581bb50a3bd05cf583ae227ae80dd50ba2b6 (patch)
treeda6b04741aa409eb1dceee4f2ad3003d6c8d1007 /gcc/testsuite/README.compat
parent9745a09461a73f315caf10ec1dae3f3a265d51a6 (diff)
downloadgcc-a22c581bb50a3bd05cf583ae227ae80dd50ba2b6.tar.gz
2002-10-17 Janis Johnson <janis187@us.ibm.com>
* g++.dg/README: Describe new compat directory. * g++.dg/dg.exp: Skip tests in compat directory. * README.compat: New file. * lib/compat.exp: New expect script. * g++.dg/compat: New test directory. * g++.dg/compat/compat.exp: New expect script. * g++.dg/compat/abi: New test directory. * g++.dg/compat/abi/bitfield1_x.C, g++.dg/compat/abi/bitfield1_main.C, g++.dg/compat/abi/bitfield1_y.C, g++.dg/compat/abi/bitfield1.h, g++.dg/compat/abi/bitfield2_x.C, g++.dg/compat/abi/bitfield2_main.C, g++.dg/compat/abi/bitfield2_y.C, g++.dg/compat/abi/bitfield2.h, g++.dg/compat/abi/vbase8-10_x.C, g++.dg/compat/abi/vbase8-10_main.C, g++.dg/compat/abi/vbase8-10_y.C, g++.dg/compat/abi/vbase8-10.h, g++.dg/compat/abi/vbase8-21_x.C, g++.dg/compat/abi/vbase8-21_main.C, g++.dg/compat/abi/vbase8-21_y.C, g++.dg/compat/abi/vbase8-21.h, g++.dg/compat/abi/vbase8-22_x.C, g++.dg/compat/abi/vbase8-22_main.C, g++.dg/compat/abi/vbase8-22_y.C, g++.dg/compat/abi/vbase8-22.h, g++.dg/compat/abi/vbase8-4_x.C, g++.dg/compat/abi/vbase8-4_main.C, g++.dg/compat/abi/vbase8-4_y.C, g++.dg/compat/abi/vbase8-4.h: New files. * g++.dg/compat/break: New test directory. * g++.dg/compat/break/empty6_x.C, g++.dg/compat/break/empty6_main.C, g++.dg/compat/break/empty6_y.C, g++.dg/compat/break/empty6.h, g++.dg/compat/break/vbase10_x.C, g++.dg/compat/break/vbase10_main.C, g++.dg/compat/break/vbase10_y.C, g++.dg/compat/break/vbase10.h, g++.dg/compat/break/vbase11_x.C, g++.dg/compat/break/vbase11_main.C, g++.dg/compat/break/vbase11_y.C, g++.dg/compat/break/vbase11.h, g++.dg/compat/break/bitfield7_x.C, g++.dg/compat/break/bitfield7_main.C, g++.dg/compat/break/bitfield7_y.C, g++.dg/compat/break/bitfield7.h, g++.dg/compat/break/bitfield5_x.C, g++.dg/compat/break/bitfield5_main.C, g++.dg/compat/break/bitfield5_y.C, g++.dg/compat/break/bitfield5.h, g++.dg/compat/break/README: New files. * g++.dg/compat/eh: New test directory. * g++.dg/compat/eh/ctor1_x.C, g++.dg/compat/eh/ctor1_main.C, g++.dg/compat/eh/ctor1_y.C, g++.dg/compat/eh/ctor1.h, g++.dg/compat/eh/ctor2_x.C, g++.dg/compat/eh/ctor2_main.C, g++.dg/compat/eh/ctor2_y.C, g++.dg/compat/eh/ctor2.h, g++.dg/compat/eh/dtor1_x.C, g++.dg/compat/eh/dtor1_main.C, g++.dg/compat/eh/dtor1_y.C, g++.dg/compat/eh/dtor1.h, g++.dg/compat/eh/filter1_x.C, g++.dg/compat/eh/filter1_main.C, g++.dg/compat/eh/filter1_y.C, g++.dg/compat/eh/filter1.h, g++.dg/compat/eh/filter2_x.C, g++.dg/compat/eh/filter2_main.C, g++.dg/compat/eh/filter2_y.C, g++.dg/compat/eh/new1_x.C, g++.dg/compat/eh/new1_main.C, g++.dg/compat/eh/new1_y.C, g++.dg/compat/eh/nrv1_x.C, g++.dg/compat/eh/nrv1_main.C, g++.dg/compat/eh/nrv1_y.C, g++.dg/compat/eh/nrv1.h, g++.dg/compat/eh/spec3_x.C, g++.dg/compat/eh/spec3_main.C, g++.dg/compat/eh/spec3_y.C, g++.dg/compat/eh/spec3.h, g++.dg/compat/eh/template1_x.C, g++.dg/compat/eh/template1_main.C, g++.dg/compat/eh/template1_y.C, g++.dg/compat/eh/template1.h, g++.dg/compat/eh/unexpected1_x.C, g++.dg/compat/eh/unexpected1_main.C, g++.dg/compat/eh/unexpected1_y.C: New files. * g++.dg/compat/init: New test directory. * g++.dg/compat/init/array5_x.C, g++.dg/compat/init/array5_main.C, g++.dg/compat/init/array5_y.C, g++.dg/compat/init/byval1_x.C, g++.dg/compat/init/byval1_main.C, g++.dg/compat/init/byval1_y.C, g++.dg/compat/init/byval1.h, g++.dg/compat/init/dtor1_x.C, g++.dg/compat/init/dtor1_main.C, g++.dg/compat/init/dtor1_y.C, g++.dg/compat/init/dtor1.h, g++.dg/compat/init/elide1_x.C, g++.dg/compat/init/elide1_main.C, g++.dg/compat/init/elide1_y.C, g++.dg/compat/init/elide1.h, g++.dg/compat/init/init-ref2_x.C, g++.dg/compat/init/init-ref2_main.C, g++.dg/compat/init/init-ref2_y.C: New files. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58266 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/README.compat')
-rw-r--r--gcc/testsuite/README.compat72
1 files changed, 72 insertions, 0 deletions
diff --git a/gcc/testsuite/README.compat b/gcc/testsuite/README.compat
new file mode 100644
index 00000000000..da2340a9050
--- /dev/null
+++ b/gcc/testsuite/README.compat
@@ -0,0 +1,72 @@
+Compatibility test suites that use lib/compat.exp test interoperability
+of two compilers that follow the same ABI, or of multiple sets of
+compiler options that are not intended to affect binary compatibility.
+They do not test conformance to a formal ABI; they check that things are
+done consistently, not that they are done correctly. They are meant to
+complement ABI test suites, not to replace them.
+
+Each test in these suites splits up functionality into two source files
+that can be compiled with two different versions of GCC and with two
+sets of compiler options.
+
+ Override the default pairs of compiler options (from compat.exp) by
+ defining the environment variable COMPAT_OPTIONS as:
+ COMPAT_OPTIONS="[list [list {tst1} {alt1}]...[list {tstn} {altn}]]"
+ where tsti and alti are lists of options, with "tsti" used by the
+ compiler under test and "alti" used by the alternate compiler. The
+ characters "[", "{", "}", and "]" are really in the string, as in
+ "[list [list {-g} {-O3}] [list {-O3} {-g}]]".
+
+ To use an alternate compiler, define the environment variable for the
+ language you're testing; e.g., for C++ define ALT_CXX_UNDER_TEST to be
+ the full pathname of an installed compiler. That will be written to
+ the site.exp file used by DejaGNU. The default is to build each test
+ with the compiler under test using the first of each pair of compiler
+ options from COMPAT_OPTIONS. When ALT_CXX_UNDER_TEST is "same", each
+ test is built using the compiler under test but with combinations of
+ the options from COMPAT_OPTIONS.
+
+A test that fails when the pieces are compiled with different compilers
+but passes when the pieces are compiled with the same compiler
+demonstrates incompatibility of the generated code or runtime support.
+A test that fails for the alternate compiler but passes for the compiler
+under test probably tests for a fix that is not present in the alternate
+compiler.
+
+There's a lot more that can be done with these tests.
+
+ Increase the robustness of the existing tests:
+
+ - recognize target triples in dg-options strings in test files
+
+ - continue to split up tests that rely on language runtime support
+ and add them to this set of tests
+
+ - make sure they work for testing with a simulator
+
+ - multilibs support?
+
+ Build test pieces into more combinations that will be likely to find
+ unusual errors:
+
+ - link using the alternate compiler; this requires support for
+ LD_LIBRARY_PATH for the alternate compiler in the support for each
+ language
+
+ - build pieces of the test into shared libraries; this requires
+ support for LD_LIBRARY_PATH for the alternate compiler, and
+ knowledge about how to build a shared library for each target
+
+ - build pieces of the test into static libraries; this requires
+ knowledge about how to build a static library for each target
+
+ Continue to add tests to g++.dg/compat, based on existing tests for
+ language runtime support and for test cases in PRs that didn't used to
+ fit into the test suite.
+
+ Set up similar tests in libstdc++-v3/testsuite.
+
+ Set up similar tests for additional languages and libraries.
+
+Janis Johnson, <janis187@us.ibm.com>
+October 2002