mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 02:44:18 +08:00
testsuite: move dg-test cleanup code from gcc-dg.exp to its own file
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>
This commit is contained in:
parent
344356f781
commit
c9d21e19df
116
gcc/testsuite/lib/dg-test-cleanup.exp
Normal file
116
gcc/testsuite/lib/dg-test-cleanup.exp
Normal file
@ -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
|
||||
}
|
@ -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
|
||||
@ -991,102 +992,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
|
||||
@ -1330,11 +1235,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 } {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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).
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user