From: Matthew Malcomson <mmalcom...@nvidia.com> For the `gcc` and `g++` tools we often pass -B/path/to/object/dir in via `TEST_ALWAYS_FLAGS` (see e.g. asan.exp where this is set). In libitm.c++/c++.exp we pass that -B flag via the `tool_flags` argument to `dg-runtest`.
Passing as the `tool_flags` argument means that these flags get added to the name of the test. This means that if one were to compare the testsuite results between runs made in different build directories libitm.c++ gives a reasonable amount of NA->PASS and PASS->NA differences even though the same tests passed each time. This patch follows the example set in other parts of the testsuite like asan_init and passes the -B arguments to the compiler via a global variable called `TEST_ALWAYS_FLAGS`. For this DejaGNU "tool" we had to newly initialise that variable in libitm_init and add a check against that variable in libitm_target_compile. I thought about adding the relevant flags we need for C++ into `ALWAYS_CFLAGS` but decided against it since the name didn't match what we would be using it for. Testing done to bootstrap & regtest on AArch64. Manually observed that the testsuite diff between two different build directories no longer exists. N.b. since I pass the new flags in the `ldflags` option of the DejaGNU options while the previous code always passed this -B flag, the compile test throwdown.C no longer gets compiled with this -B flag. I believe that is not a problem. libitm/ChangeLog: * testsuite/libitm.c++/c++.exp: Use TEST_ALWAYS_FLAGS instead of passing arguments to dg-runtest. * testsuite/lib/libitm.exp (libitm_init): Initialise TEST_ALWAYS_FLAGS. (libitm_target_compile): Take flags from TEST_ALWAYS_FLAGS. Signed-off-by: Matthew Malcomson <mmalcom...@nvidia.com> --- libitm/testsuite/lib/libitm.exp | 8 ++++++++ libitm/testsuite/libitm.c++/c++.exp | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp index ac390d6d0dd..42a5aac4b0b 100644 --- a/libitm/testsuite/lib/libitm.exp +++ b/libitm/testsuite/lib/libitm.exp @@ -77,6 +77,7 @@ proc libitm_init { args } { global blddir global gluefile wrap_flags global ALWAYS_CFLAGS + global TEST_ALWAYS_FLAGS global CFLAGS global TOOL_EXECUTABLE TOOL_OPTIONS global GCC_UNDER_TEST @@ -145,6 +146,9 @@ proc libitm_init { args } { } } + # This set in order to give libitm.c++/c++.exp a nicely named flag to set + # when adding C++ options. + set TEST_ALWAYS_FLAGS "" set ALWAYS_CFLAGS "" if { $blddir != "" } { lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/" @@ -191,6 +195,7 @@ proc libitm_target_compile { source dest type options } { global libitm_compile_options global gluefile wrap_flags global ALWAYS_CFLAGS + global TEST_ALWAYS_FLAGS global GCC_UNDER_TEST global lang_test_file global lang_library_path @@ -217,6 +222,9 @@ proc libitm_target_compile { source dest type options } { if [info exists ALWAYS_CFLAGS] { set options [concat "$ALWAYS_CFLAGS" $options] } + if [info exists TEST_ALWAYS_FLAGS] { + set options [concat "$TEST_ALWAYS_FLAGS" $options] + } set options [dg-additional-files-options $options $source $dest $type] diff --git a/libitm/testsuite/libitm.c++/c++.exp b/libitm/testsuite/libitm.c++/c++.exp index ab278f2cb33..d501e7e8170 100644 --- a/libitm/testsuite/libitm.c++/c++.exp +++ b/libitm/testsuite/libitm.c++/c++.exp @@ -56,10 +56,10 @@ if { $lang_test_file_found } { # Gather a list of all tests. set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]] - set stdcxxadder "" + set saved_TEST_ALWAYS_FLAGS $TEST_ALWAYS_FLAGS if { $blddir != "" } { set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}" - set stdcxxadder "-B ${blddir}/${lang_library_path}" + set TEST_ALWAYS_FLAGS "$TEST_ALWAYS_FLAGS ldflags=-B${blddir}/${lang_library_path}" } else { set ld_library_path "$always_ld_library_path" } @@ -74,7 +74,8 @@ if { $lang_test_file_found } { } # Main loop. - dg-runtest $tests $stdcxxadder $libstdcxx_includes + dg-runtest $tests "" $libstdcxx_includes + set TEST_ALWAYS_FLAGS $saved_TEST_ALWAYS_FLAGS } # All done. -- 2.43.0