libgomp testsuite: Have each '*.exp' file specify the compiler to use [PR91884] (was: libgomp testsuite: (not) using a specific driver for C++, Fortran?)
Checks
Commit Message
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
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(-)
@@ -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]
@@ -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] \
@@ -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"
@@ -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
@@ -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 \
@@ -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] \
@@ -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"
@@ -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