diff mbox series

[4/7] testsuite: move dg-test cleanup code from gcc-dg.exp to its own file

Message ID 20240815181156.1815075-5-dmalcolm@redhat.com
State New
Headers show
Series v3 of libdiagnostics | expand

Commit Message

David Malcolm Aug. 15, 2024, 6:11 p.m. UTC
I need to use this cleanup logic for the testsuite for libdiagnostics
where it's too awkward to directly use gcc-dg.exp itself.

No functional change intended.

gcc/testsuite/ChangeLog:
	* lib/dg-test-cleanup.exp: New file, from material moved from
	lib/gcc-dg.exp.
	* lib/gcc-dg.exp: Add load_lib of dg-test-cleanup.exp.
	(cleanup-after-saved-dg-test): Move to lib/dg-test-cleanup.exp.
	(dg-test): Likewise for override.
	(initialize_prune_notes): Likewise.

libatomic/ChangeLog:
	* testsuite/lib/libatomic.exp: Add
	"load_gcc_lib dg-test-cleanup.exp".

libgomp/ChangeLog:
	* testsuite/lib/libgomp.exp: Add
	"load_gcc_lib dg-test-cleanup.exp".
libitm/ChangeLog:
	* testsuite/lib/libitm.exp: Add
	"load_gcc_lib dg-test-cleanup.exp".

libphobos/ChangeLog:
	* testsuite/lib/libphobos-dg.exp: Add
	"load_gcc_lib dg-test-cleanup.exp".

libstdc++-v3/ChangeLog:
	* testsuite/lib/libstdc++.exp: Add
	"load_gcc_lib dg-test-cleanup.exp".

libvtv/ChangeLog:
	* testsuite/lib/libvtv.exp: Add
	"load_gcc_lib dg-test-cleanup.exp".

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/testsuite/lib/dg-test-cleanup.exp    | 116 +++++++++++++++++++++++
 gcc/testsuite/lib/gcc-dg.exp             | 102 +-------------------
 libatomic/testsuite/lib/libatomic.exp    |   1 +
 libgomp/testsuite/lib/libgomp.exp        |   1 +
 libitm/testsuite/lib/libitm.exp          |   1 +
 libphobos/testsuite/lib/libphobos-dg.exp |   1 +
 libstdc++-v3/testsuite/lib/libstdc++.exp |   1 +
 libvtv/testsuite/lib/libvtv.exp          |   1 +
 8 files changed, 123 insertions(+), 101 deletions(-)
 create mode 100644 gcc/testsuite/lib/dg-test-cleanup.exp
diff mbox series

Patch

diff --git a/gcc/testsuite/lib/dg-test-cleanup.exp b/gcc/testsuite/lib/dg-test-cleanup.exp
new file mode 100644
index 000000000000..b2b8507a0320
--- /dev/null
+++ b/gcc/testsuite/lib/dg-test-cleanup.exp
@@ -0,0 +1,116 @@ 
+#   Copyright (C) 1997-2024 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# We need to make sure that additional_* are cleared out after every
+# test.  It is not enough to clear them out *before* the next test run
+# because gcc-target-compile gets run directly from some .exp files
+# (outside of any test).  (Those uses should eventually be eliminated.)
+
+# Because the DG framework doesn't provide a hook that is run at the
+# end of a test, we must replace dg-test with a wrapper.
+
+if { [info procs saved-dg-test] == [list] } {
+    rename dg-test saved-dg-test
+
+    # Helper function for cleanups that should happen after the call
+    # to the real dg-test, whether or not it returns normally, or
+    # fails with an error.
+    proc cleanup-after-saved-dg-test { } {
+	global additional_files
+	global additional_sources
+	global additional_sources_used
+	global additional_prunes
+	global compiler_conditional_xfail_data
+	global shouldfail
+	global expect_ice
+	global testname_with_flags
+	global set_target_env_var
+	global set_compiler_env_var
+	global saved_compiler_env_var
+	global keep_saved_temps_suffixes
+	global nn_line_numbers_enabled
+	global multiline_expected_outputs
+	global freeform_regexps
+	global save_linenr_varnames
+
+	set additional_files ""
+	set additional_sources ""
+	set additional_sources_used ""
+	set additional_prunes ""
+	set shouldfail 0
+	set expect_ice 0
+	if [info exists set_target_env_var] {
+	    unset set_target_env_var
+	}
+	if [info exists set_compiler_env_var] {
+	    restore-compiler-env-var
+	    unset set_compiler_env_var
+	    unset saved_compiler_env_var
+	}
+	if [info exists keep_saved_temps_suffixes] {
+	    unset keep_saved_temps_suffixes
+	}
+	unset_timeout_vars
+	if [info exists compiler_conditional_xfail_data] {
+	    unset compiler_conditional_xfail_data
+	}
+	if [info exists testname_with_flags] {
+	    unset testname_with_flags
+	}
+	set nn_line_numbers_enabled 0
+	set multiline_expected_outputs []
+	set freeform_regexps []
+
+	if { [info exists save_linenr_varnames] } {
+	    foreach varname $save_linenr_varnames {
+		# Cleanup varname
+		eval global $varname
+		eval unset $varname
+
+		# Cleanup varname_used, or generate defined-but-not-used
+		# warning.
+		set varname_used used_$varname
+		eval global $varname_used
+		eval set used [info exists $varname_used]
+		if { $used } {
+		    eval unset $varname_used
+		} else {
+		    regsub {^saved_linenr_} $varname "" org_varname
+		    warning "dg-line var $org_varname defined, but not used"
+		}
+	    }
+	    unset save_linenr_varnames
+	}
+
+	initialize_prune_notes
+    }
+
+    proc dg-test { args } {
+	global errorInfo
+
+	if { [ catch { eval saved-dg-test $args } errmsg ] } {
+	    set saved_info $errorInfo
+	    cleanup-after-saved-dg-test
+	    error $errmsg $saved_info
+	}
+	cleanup-after-saved-dg-test
+    }
+}
+
+proc initialize_prune_notes { } {
+    global prune_notes
+    set prune_notes 1
+}
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 992062103c12..33b7e5a1e2c2 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -34,6 +34,7 @@  load_lib target-libpath.exp
 load_lib torture-options.exp
 load_lib fortran-modules.exp
 load_lib multiline.exp
+load_lib dg-test-cleanup.exp
 
 # We set LC_ALL and LANG to C so that we get the same error messages as expected.
 setenv LC_ALL C
@@ -990,102 +991,6 @@  proc output-exists-not { args } {
     }
 }
 
-# We need to make sure that additional_* are cleared out after every
-# test.  It is not enough to clear them out *before* the next test run
-# because gcc-target-compile gets run directly from some .exp files
-# (outside of any test).  (Those uses should eventually be eliminated.)
-
-# Because the DG framework doesn't provide a hook that is run at the
-# end of a test, we must replace dg-test with a wrapper.
-
-if { [info procs saved-dg-test] == [list] } {
-    rename dg-test saved-dg-test
-
-    # Helper function for cleanups that should happen after the call
-    # to the real dg-test, whether or not it returns normally, or
-    # fails with an error.
-    proc cleanup-after-saved-dg-test { } {
-	global additional_files
-	global additional_sources
-	global additional_sources_used
-	global additional_prunes
-	global compiler_conditional_xfail_data
-	global shouldfail
-	global expect_ice
-	global testname_with_flags
-	global set_target_env_var
-	global set_compiler_env_var
-	global saved_compiler_env_var
-	global keep_saved_temps_suffixes
-	global nn_line_numbers_enabled
-	global multiline_expected_outputs
-	global freeform_regexps
-	global save_linenr_varnames
-
-	set additional_files ""
-	set additional_sources ""
-	set additional_sources_used ""
-	set additional_prunes ""
-	set shouldfail 0
-	set expect_ice 0
-	if [info exists set_target_env_var] {
-	    unset set_target_env_var
-	}
-	if [info exists set_compiler_env_var] {
-	    restore-compiler-env-var
-	    unset set_compiler_env_var
-	    unset saved_compiler_env_var
-	}
-	if [info exists keep_saved_temps_suffixes] {
-	    unset keep_saved_temps_suffixes
-	}
-	unset_timeout_vars
-	if [info exists compiler_conditional_xfail_data] {
-	    unset compiler_conditional_xfail_data
-	}
-	if [info exists testname_with_flags] {
-	    unset testname_with_flags
-	}
-	set nn_line_numbers_enabled 0
-	set multiline_expected_outputs []
-	set freeform_regexps []
-
-	if { [info exists save_linenr_varnames] } {
-	    foreach varname $save_linenr_varnames {
-		# Cleanup varname
-		eval global $varname
-		eval unset $varname
-
-		# Cleanup varname_used, or generate defined-but-not-used
-		# warning.
-		set varname_used used_$varname
-		eval global $varname_used
-		eval set used [info exists $varname_used]
-		if { $used } {
-		    eval unset $varname_used
-		} else {
-		    regsub {^saved_linenr_} $varname "" org_varname
-		    warning "dg-line var $org_varname defined, but not used"
-		}
-	    }
-	    unset save_linenr_varnames
-	}
-
-	initialize_prune_notes
-    }
-
-    proc dg-test { args } {
-	global errorInfo
-
-	if { [ catch { eval saved-dg-test $args } errmsg ] } {
-	    set saved_info $errorInfo
-	    cleanup-after-saved-dg-test
-	    error $errmsg $saved_info
-	}
-	cleanup-after-saved-dg-test
-    }
-}
-
 if { [info procs saved-dg-warning] == [list] \
      && [info exists gcc_warning_prefix] } {
     rename dg-warning saved-dg-warning
@@ -1329,11 +1234,6 @@  proc dg-missed { args } {
 
 variable prune_notes
 
-proc initialize_prune_notes { } {
-    global prune_notes
-    set prune_notes 1
-}
-
 initialize_prune_notes
 
 proc dg-note { args } {
diff --git a/libatomic/testsuite/lib/libatomic.exp b/libatomic/testsuite/lib/libatomic.exp
index ed6ba806732f..f90bc4b708a0 100644
--- a/libatomic/testsuite/lib/libatomic.exp
+++ b/libatomic/testsuite/lib/libatomic.exp
@@ -50,6 +50,7 @@  load_gcc_lib torture-options.exp
 load_gcc_lib timeout.exp
 load_gcc_lib timeout-dg.exp
 load_gcc_lib fortran-modules.exp
+load_gcc_lib dg-test-cleanup.exp
 
 set dg-do-what-default run
 
diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
index 7c1092629168..cad0280f3798 100644
--- a/libgomp/testsuite/lib/libgomp.exp
+++ b/libgomp/testsuite/lib/libgomp.exp
@@ -41,6 +41,7 @@  load_gcc_lib scanwpaipa.exp
 load_gcc_lib timeout-dg.exp
 load_gcc_lib torture-options.exp
 load_gcc_lib fortran-modules.exp
+load_gcc_lib dg-test-cleanup.exp
 
 # Try to load a test support file, built during libgomp configuration.
 # Search in '..' vs. '.' to support parallel vs. sequential testing.
diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp
index 3e60797c3e31..5b387f2ec408 100644
--- a/libitm/testsuite/lib/libitm.exp
+++ b/libitm/testsuite/lib/libitm.exp
@@ -50,6 +50,7 @@  load_gcc_lib scanwpaipa.exp
 load_gcc_lib timeout-dg.exp
 load_gcc_lib torture-options.exp
 load_gcc_lib fortran-modules.exp
+load_gcc_lib dg-test-cleanup.exp
 
 set dg-do-what-default run
 
diff --git a/libphobos/testsuite/lib/libphobos-dg.exp b/libphobos/testsuite/lib/libphobos-dg.exp
index 965ff025a04d..09b644ac573f 100644
--- a/libphobos/testsuite/lib/libphobos-dg.exp
+++ b/libphobos/testsuite/lib/libphobos-dg.exp
@@ -29,6 +29,7 @@  load_gcc_lib scanipa.exp
 load_gcc_lib torture-options.exp
 load_gcc_lib timeout-dg.exp
 load_gcc_lib fortran-modules.exp
+load_gcc_lib dg-test-cleanup.exp
 load_gcc_lib gcc-dg.exp
 
 # Utility routines.
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 2510c7f4cbb9..161e9501a379 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -73,6 +73,7 @@  load_gcc_lib timeout.exp
 load_gcc_lib timeout-dg.exp
 load_gcc_lib wrapper.exp
 load_gcc_lib target-utils.exp
+load_gcc_lib dg-test-cleanup.exp
 
 # Useful for debugging.  Pass the name of a variable and the verbosity
 # threshold (number of -v's on the command line).
diff --git a/libvtv/testsuite/lib/libvtv.exp b/libvtv/testsuite/lib/libvtv.exp
index bfd03d7d2580..61980141a7ea 100644
--- a/libvtv/testsuite/lib/libvtv.exp
+++ b/libvtv/testsuite/lib/libvtv.exp
@@ -48,6 +48,7 @@  load_gcc_lib scanwpaipa.exp
 load_gcc_lib timeout-dg.exp
 load_gcc_lib torture-options.exp
 load_gcc_lib fortran-modules.exp
+load_gcc_lib dg-test-cleanup.exp
 
 set dg-do-what-default run