libgomp testsuite: Have each '*.exp' file specify the compiler to use [PR91884] (was: libgomp testsuite: (not) using a specific driver for C++, Fortran?)

Message ID 87bkiq9cpa.fsf@euler.schwinge.homeip.net
State Unresolved
Headers
Series libgomp testsuite: Have each '*.exp' file specify the compiler to use [PR91884] (was: libgomp testsuite: (not) using a specific driver for C++, Fortran?) |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Thomas Schwinge May 12, 2023, 8:27 a.m. UTC
  Hi!

The cleanup is done, now turn ourselves to the changes proper re PR91884
"libgomp testsuite: (not) using a specific driver for C++, Fortran":

On 2014-11-04T10:31:37-0800, Mike Stump <mikestump@comcast.net> wrote:
> On Nov 4, 2014, at 4:13 AM, Thomas Schwinge <thomas@codesourcery.com> wrote:
>> On Wed, 15 Oct 2014 17:46:48 +0200, I wrote:
>>> No matter whether it's C, C++, or Fortran source code, the libgomp
>>> testsuite always uses (for build-tree testing) gcc/xgcc, or (for
>>> installed testing) GCC_UNDER_TEST.  It doesn't make use of
>>> GXX_UNDER_TEST, GFORTRAN_UNDER_TEST.  To support the latter two
>>> languages' needs, some -l[...] flags are then added via lang_link_flags.
>>> For example, for Fortran this is -lgfortran.  This is, however, not what
>>> would happen if using the gfortran driver to build (which is what a user
>>> would be doing -- which we should replicate as much as possible at least
>>> for installed testing): the gfortran driver also adds -lquadmath, if
>>> applicable.
>>>
>>> Now, I wonder why to re-invent all that in the libgomp testsuite, if the
>>> respective driver already has that knowledge, via spec files, for
>>> example?  (Also, the regular GCC compiler tests, gcc/testsuite/, are
>>> doing the right thing.)  Why is libgomp testsuite implemented this way --
>>> just a legacy of the past, or is there a need for that (that I'm not
>>> seeing)?
>>>
>>> [...]
>>>
>>> Am I on the right track with the following?
>>
>> Nobody commented, which also means nobody disagreed
>
> :-)
>
>> OK to commit all that to trunk?
>
> Ok, thanks.

> Watch for any review points from the libgomp people, they might trickle a few in.  I don’t mean to cut short any review points from them.

After Tobias in his 2019 "PR testsuite/91884 Add -lquadmath if available"
again picked up my idea and parts of my 2014 patches (... but in the end
settled for a "simpler" solution to the problem at hand), my original
proposal also got an ACK from Rainer,
<https://inbox.sourceware.org/ydd36g2jc7a.fsf@CeBiTec.Uni-Bielefeld.DE>.

> Also, please watch for breakage.

Always.  :-)


First, another "no change in behavior" new patch, loosely based
on/extracted out of my earlier work.  I'm posting it separately, but
given that it's in line with my earlier work (just a separate step), I
intend to push it soon, unless there are any objections, of course.
"libgomp testsuite: Have each '*.exp' file specify the compiler to use [PR91884]"
("..., which is still 'GCC_UNDER_TEST' for all of them"), see attached.


Grüße
 Thomas


-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
  

Patch

From 1b2c8132495435dd4455a1c79e5abbd88073c754 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Wed, 10 May 2023 14:43:21 +0200
Subject: [PATCH] libgomp testsuite: Have each '*.exp' file specify the
 compiler to use [PR91884]

..., which is still 'GCC_UNDER_TEST' for all of them; no change in behavior.

	PR testsuite/91884
	libgomp/
	* testsuite/lib/libgomp.exp (libgomp_target_compile): Don't
	specify compiler.
	* testsuite/libgomp.c++/c++.exp (ALWAYS_CFLAGS): Specify compiler.
	* testsuite/libgomp.c/c.exp (ALWAYS_CFLAGS): Likewise.
	* testsuite/libgomp.fortran/fortran.exp (ALWAYS_CFLAGS): Likewise.
	* testsuite/libgomp.graphite/graphite.exp (ALWAYS_CFLAGS):
	Likewise.
	* testsuite/libgomp.oacc-c++/c++.exp (ALWAYS_CFLAGS): Likewise.
	* testsuite/libgomp.oacc-c/c.exp (ALWAYS_CFLAGS): Likewise.
	* testsuite/libgomp.oacc-fortran/fortran.exp (ALWAYS_CFLAGS):
	Likewise.
---
 libgomp/testsuite/lib/libgomp.exp                  |  5 -----
 libgomp/testsuite/libgomp.c++/c++.exp              | 10 +++++-----
 libgomp/testsuite/libgomp.c/c.exp                  |  2 ++
 libgomp/testsuite/libgomp.fortran/fortran.exp      |  1 +
 libgomp/testsuite/libgomp.graphite/graphite.exp    |  1 +
 libgomp/testsuite/libgomp.oacc-c++/c++.exp         | 10 +++++-----
 libgomp/testsuite/libgomp.oacc-c/c.exp             |  2 ++
 libgomp/testsuite/libgomp.oacc-fortran/fortran.exp |  1 +
 8 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
index 9fea31d8067..48c43e4a136 100644
--- a/libgomp/testsuite/lib/libgomp.exp
+++ b/libgomp/testsuite/lib/libgomp.exp
@@ -46,10 +46,6 @@  load_file libgomp-test-support.exp
 
 set dg-do-what-default run
 
-#
-# GCC_UNDER_TEST is the compiler under test.
-#
-
 set libgomp_compile_options ""
 
 #
@@ -262,7 +258,6 @@  proc libgomp_target_compile { source dest type options } {
 
     lappend options "additional_flags=[libio_include_flags]"
     lappend options "timeout=[timeout_value]"
-    lappend options "compiler=$GCC_UNDER_TEST"
 
     set options [concat $libgomp_compile_options $options]
 
diff --git a/libgomp/testsuite/libgomp.c++/c++.exp b/libgomp/testsuite/libgomp.c++/c++.exp
index 1a1c3ee2225..4110ada7c46 100644
--- a/libgomp/testsuite/libgomp.c++/c++.exp
+++ b/libgomp/testsuite/libgomp.c++/c++.exp
@@ -16,6 +16,11 @@  if { $blddir != "" } {
     return
 }
 set lang_link_flags "-lstdc++"
+# Switch into C++ mode.  Otherwise, the 'libgomp.c-c++-common/*.c'
+# files would be compiled as C files.
+set SAVE_GCC_UNDER_TEST "$GCC_UNDER_TEST"
+set GCC_UNDER_TEST "$GCC_UNDER_TEST -x c++"
+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
 
 # If a testcase doesn't have special options, use these.
 if ![info exists DEFAULT_CFLAGS] then {
@@ -28,11 +33,6 @@  dg-init
 # Turn on OpenMP.
 lappend ALWAYS_CFLAGS "additional_flags=-fopenmp"
 
-# Switch into C++ mode.  Otherwise, the libgomp.c-c++-common/*.c
-# files would be compiled as C files.
-set SAVE_GCC_UNDER_TEST "$GCC_UNDER_TEST"
-set GCC_UNDER_TEST "$GCC_UNDER_TEST -x c++"
-
 # Gather a list of all tests.
 set tests [lsort [concat \
 		      [find $srcdir/$subdir *.C] \
diff --git a/libgomp/testsuite/libgomp.c/c.exp b/libgomp/testsuite/libgomp.c/c.exp
index 0ee28ed723e..aae282478db 100644
--- a/libgomp/testsuite/libgomp.c/c.exp
+++ b/libgomp/testsuite/libgomp.c/c.exp
@@ -1,6 +1,8 @@ 
 load_lib libgomp-dg.exp
 load_gcc_lib gcc-dg.exp
 
+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
+
 # If a testcase doesn't have special options, use these.
 if ![info exists DEFAULT_CFLAGS] then {
     set DEFAULT_CFLAGS "-O2"
diff --git a/libgomp/testsuite/libgomp.fortran/fortran.exp b/libgomp/testsuite/libgomp.fortran/fortran.exp
index 9295bbae65d..9aeebd3af7c 100644
--- a/libgomp/testsuite/libgomp.fortran/fortran.exp
+++ b/libgomp/testsuite/libgomp.fortran/fortran.exp
@@ -29,6 +29,7 @@  if { $blddir != "" } {
     set lang_include_flags "-fintrinsic-modules-path=${blddir}"
 }
 set lang_link_flags "-lgfortran -foffload=-lgfortran"
+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
 
 # Initialize dg.
 dg-init
diff --git a/libgomp/testsuite/libgomp.graphite/graphite.exp b/libgomp/testsuite/libgomp.graphite/graphite.exp
index ff53a31272c..bc3a82d8804 100644
--- a/libgomp/testsuite/libgomp.graphite/graphite.exp
+++ b/libgomp/testsuite/libgomp.graphite/graphite.exp
@@ -25,6 +25,7 @@  if ![check_effective_target_fgraphite] {
   return
 }
 
+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
 # Flags for force-parallel-*.c testcases.
 set PARALLEL_CFLAGS "-ansi -pedantic-errors -O2 \
 -ftree-parallelize-loops=4 -floop-parallelize-all \
diff --git a/libgomp/testsuite/libgomp.oacc-c++/c++.exp b/libgomp/testsuite/libgomp.oacc-c++/c++.exp
index 63d1d7650a2..70fb9da0ef4 100644
--- a/libgomp/testsuite/libgomp.oacc-c++/c++.exp
+++ b/libgomp/testsuite/libgomp.oacc-c++/c++.exp
@@ -26,6 +26,11 @@  if { $blddir != "" } {
     return
 }
 set lang_link_flags "-lstdc++"
+# Switch into C++ mode.  Otherwise, the 'libgomp.oacc-c-c++-common/*.c'
+# files would be compiled as C files.
+set SAVE_GCC_UNDER_TEST "$GCC_UNDER_TEST"
+set GCC_UNDER_TEST "$GCC_UNDER_TEST -x c++"
+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
 
 # Initialize dg.
 dg-init
@@ -34,11 +39,6 @@  torture-init
 # Turn on OpenACC.
 lappend ALWAYS_CFLAGS "additional_flags=-fopenacc"
 
-# Switch into C++ mode.  Otherwise, the libgomp.oacc-c-c++-common/*.c
-# files would be compiled as C files.
-set SAVE_GCC_UNDER_TEST "$GCC_UNDER_TEST"
-set GCC_UNDER_TEST "$GCC_UNDER_TEST -x c++"
-
 # Gather a list of all tests.
 set tests [lsort [concat \
 		      [find $srcdir/$subdir *.C] \
diff --git a/libgomp/testsuite/libgomp.oacc-c/c.exp b/libgomp/testsuite/libgomp.oacc-c/c.exp
index ca61a82937a..8ca0c81687c 100644
--- a/libgomp/testsuite/libgomp.oacc-c/c.exp
+++ b/libgomp/testsuite/libgomp.oacc-c/c.exp
@@ -15,6 +15,8 @@  proc check_effective_target_c++ { } {
 dg-init
 torture-init
 
+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
+
 # Turn on OpenACC.
 lappend ALWAYS_CFLAGS "additional_flags=-fopenacc"
 
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp b/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
index af0a4f7ff31..56dd9485339 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
+++ b/libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
@@ -31,6 +31,7 @@  if { $blddir != "" } {
     set lang_include_flags "-fintrinsic-modules-path=${blddir}"
 }
 set lang_link_flags "-lgfortran -foffload=-lgfortran"
+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
 
 # Initialize dg.
 dg-init
-- 
2.34.1