Hi! On Tue, 13 Aug 2013 13:06:30 +0200, I wrote: > I noticed something strange in the libgomp testresults (but not > necessarily specific to libgomp): an "arbitrary" set of the Fortran > execution tests are run just for -O, and others for each of the full set > of torture options: -O0, -O1, -O2, and so on. After some time I realized > it's the set of tests that contain an explicit »dg-do run« directive that > are run for all torture levels, and the tests that inherit the default > »set dg-do-what-default run« from libgomp/testsuite/lib/libgomp.exp are > only run for -O. This is coming from the special handling in > gcc/testsuite/lib/gfortran-dg.exp:gfortran-dg-test (which seems to be > present approximately "forever"). Should this consider the > dg-do-what-default case, too? Why is torture testing done only for > execution tests? And, why only for Fortran? Is this behavior generally > intentional -- of course, bigger testing coverage is nice, but this seems > a bit arbitrary to me?
Thanks Janis and Mikael for your replies (nearly a year ago...), but
still my questions remain to be answered: in my understanding, the
libgomp testsuite is not the place for compiler torture testing
(different optimization flags and all that -- and, that is done for
Fortran only; gfortran-dg-runtest), but rather, I understand the libgomp
testsuite to be the place for libgomp library testing ;-), and hence I
propose to remove that special casing of Fortran test cases:
--- libgomp/testsuite/lib/libgomp-dg.exp
+++ libgomp/testsuite/lib/libgomp-dg.exp
@@ -5,3 +5,19 @@ proc libgomp-dg-test { prog do_what extra_tool_flags } {
proc libgomp-dg-prune { system text } {
return [gcc-dg-prune $system $text]
}
+
+# Modified dg-runtest that deal with Fortran modules cleanup.
+proc dg-runtest-fortran { testcases flags default-extra-flags } {
+ global runtests
+
+ foreach testcase $testcases {
+ # If we're only testing specific files and this isn't one of them, skip
it.
+ if {![runtest_file_p $runtests $testcase]} {
+ continue
+ }
+ verbose "Testing [file tail [file dirname $testcase]]/[file tail
$testcase]"
+ list-module-names $testcase
+ dg-test $testcase $flags ${default-extra-flags}
+ cleanup-modules ""
+ }
+}
--- libgomp/testsuite/libgomp.fortran/fortran.exp
+++ libgomp/testsuite/libgomp.fortran/fortran.exp
@@ -11,6 +11,10 @@ set lang_link_flags "-lgfortran"
set lang_test_file_found 0
set quadmath_library_path "../libquadmath/.libs"
+# If a testcase doesn't have special options, use these.
+if ![info exists DEFAULT_CFLAGS] then {
+ set DEFAULT_CFLAGS "-O2"
+}
# Initialize dg.
dg-init
@@ -60,7 +64,7 @@ if { $lang_test_file_found } {
set_ld_library_path_env_vars
# Main loop.
- gfortran-dg-runtest $tests ""
+ dg-runtest-fortran $tests "" $DEFAULT_CFLAGS
}
# All done.
A follow-up patch could then be to remove all the redundant »dg-do run«
directives from the individual test cases, as that's the default set in
libgomp/testsuite/lib/libgomp.exp: »set dg-do-what-default run«.
Grüße,
Thomas
pgpDpYkQRvwJA.pgp
Description: PGP signature
