diff options
author | Alexandre Oliva <oliva@adacore.com> | 2024-09-02 11:31:51 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2024-09-02 11:31:51 -0300 |
commit | 9223d1715918e4e8e7a59471b228f815b4a3467c (patch) | |
tree | 6a17c09812b1684afd166f55599cb62660b15d3b /gcc | |
parent | b9bf0c3f54d4e36ca40598600d6e87107204c4c6 (diff) | |
download | gcc-9223d1715918e4e8e7a59471b228f815b4a3467c.zip gcc-9223d1715918e4e8e7a59471b228f815b4a3467c.tar.gz gcc-9223d1715918e4e8e7a59471b228f815b4a3467c.tar.bz2 |
[testsuite] add linkonly to dg-additional-sources [PR115295]
The D testsuite shows it was a mistake to assume that
dg-additional-sources are never to be used for compilation tests.
Even if an output file is specified for compilation, extra module
files can be named and used in the compilation without being flagged
as errors.
Introduce a 'linkonly' flag for dg-additional-sources, and use it in
pr95401.cc and other vector tests that default to run, so that its
additional sources get discarded when vector tests downgrade to
compile-only. This reverts previous workarounds for this very
circumstance, that relied on being able to run vector tests anyway,
even after failing to detect runtime or hardware vector support.
for gcc/ChangeLog
PR d/115295
* doc/sourcebuild.texi (dg-additional-sources): Add linkonly.
for gcc/testsuite/ChangeLog
PR d/115295
* g++.dg/vect/pr95401.cc: Add linkonly to dg-additional-sources.
* g++.dg/vect/pr68762-1.cc: Likewise.
* g++.dg/vect/simd-clone-3.cc: Likewise.
* g++.dg/vect/simd-clone-5.cc: Likewise.
* gcc.dg/vect/vect-simd-clone-10.c: Likewise. Drop dg-do run.
* gcc.dg/vect/vect-simd-clone-12.c: Likewise. Likewise.
* lib/gcc-defs.exp (additional_sources_omit_on_compile): New.
(dg-additional-sources): Add to it on linkonly.
(dg-additional-files-options): Omit select sources on compile.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/doc/sourcebuild.texi | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/pr68762-1.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/pr95401.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/simd-clone-3.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/simd-clone-5.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/lib/gcc-defs.exp | 35 |
8 files changed, 39 insertions, 21 deletions
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 0636fc0..7c7094d 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1328,15 +1328,16 @@ to @var{var_value} before execution of the program created by the test. Specify additional files, other than source files, that must be copied to the system where the compiler runs. -@item @{ dg-additional-sources "@var{filelist}" [@{ target @var{selector} @}] @} +@item @{ dg-additional-sources "@var{filelist}" [@{ \[linkonly\] \[target @var{selector}\] @}] @} Specify additional source files to appear in the compile line following the main test file. If the directive includes the optional @samp{@{ @var{selector} @}} then the additional sources are only added if the target system matches the @var{selector}. -Additional sources are generally used only in @samp{link} and @samp{run} -tests; they are reported as unsupported and discarded in other kinds of -tests that direct the compiler to output to a single file. +If @samp{linkonly} is specified, additional sources are used only in +@samp{link} and @samp{run} tests; they are reported as unsupported and +discarded in other kinds of tests that direct the compiler to output to +a single file. @end table @subsubsection Add checks at the end of a test diff --git a/gcc/testsuite/g++.dg/vect/pr68762-1.cc b/gcc/testsuite/g++.dg/vect/pr68762-1.cc index 118a301..53cc6e4 100644 --- a/gcc/testsuite/g++.dg/vect/pr68762-1.cc +++ b/gcc/testsuite/g++.dg/vect/pr68762-1.cc @@ -2,7 +2,7 @@ // { dg-require-effective-target vect_simd_clones } // { dg-additional-options "-fopenmp-simd -fno-inline" } // { dg-additional-options "-mavx" { target avx_runtime } } -// { dg-additional-sources "pr68762-2.cc" } +// { dg-additional-sources "pr68762-2.cc" linkonly } #include "pr68762.h" diff --git a/gcc/testsuite/g++.dg/vect/pr95401.cc b/gcc/testsuite/g++.dg/vect/pr95401.cc index 6a56dab..8b1be4f 100644 --- a/gcc/testsuite/g++.dg/vect/pr95401.cc +++ b/gcc/testsuite/g++.dg/vect/pr95401.cc @@ -1,5 +1,5 @@ // { dg-additional-options "-mavx2 -O3" { target avx2_runtime } } -// { dg-additional-sources pr95401a.cc } +// { dg-additional-sources pr95401a.cc linkonly } extern int var_9; extern unsigned var_14; diff --git a/gcc/testsuite/g++.dg/vect/simd-clone-3.cc b/gcc/testsuite/g++.dg/vect/simd-clone-3.cc index 1057a7eb5..4dd9d15 100644 --- a/gcc/testsuite/g++.dg/vect/simd-clone-3.cc +++ b/gcc/testsuite/g++.dg/vect/simd-clone-3.cc @@ -1,7 +1,7 @@ // { dg-require-effective-target vect_simd_clones } // { dg-additional-options "-fopenmp-simd -fno-inline" } // { dg-additional-options "-mavx" { target avx_runtime } } -// { dg-additional-sources "simd-clone-2.cc" } +// { dg-additional-sources "simd-clone-2.cc" linkonly } #include "simd-clone-2.h" diff --git a/gcc/testsuite/g++.dg/vect/simd-clone-5.cc b/gcc/testsuite/g++.dg/vect/simd-clone-5.cc index 07ec8a8..aca64a0 100644 --- a/gcc/testsuite/g++.dg/vect/simd-clone-5.cc +++ b/gcc/testsuite/g++.dg/vect/simd-clone-5.cc @@ -1,7 +1,7 @@ // { dg-require-effective-target vect_simd_clones } // { dg-additional-options "-fopenmp-simd -fno-inline" } // { dg-additional-options "-mavx" { target avx_runtime } } -// { dg-additional-sources "simd-clone-4.cc" } +// { dg-additional-sources "simd-clone-4.cc" linkonly } #include "simd-clone-4.h" diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c index 009c849..06fbdef 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c @@ -1,9 +1,7 @@ -/* Since this uses dg-additional-sources, need to specify `dg-do run` instead of the default. */ -/* { dg-do run } */ /* { dg-require-effective-target vect_simd_clones } */ /* { dg-additional-options "-fopenmp-simd" } */ /* { dg-additional-options "-mavx" { target avx_runtime } } */ -/* { dg-additional-sources vect-simd-clone-10a.c } */ +/* { dg-additional-sources vect-simd-clone-10a.c linkonly } */ #include "tree-vect.h" diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c index 4699a3f..f640c8b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c @@ -1,9 +1,7 @@ -/* Since this uses dg-additional-sources, need to specify `dg-do run` instead of the default. */ -/* { dg-do run } */ /* { dg-require-effective-target vect_simd_clones } */ /* { dg-additional-options "-fopenmp-simd" } */ /* { dg-additional-options "-mavx" { target avx_runtime } } */ -/* { dg-additional-sources vect-simd-clone-12a.c } */ +/* { dg-additional-sources vect-simd-clone-12a.c linkonly } */ #include "vect-simd-clone-10.c" diff --git a/gcc/testsuite/lib/gcc-defs.exp b/gcc/testsuite/lib/gcc-defs.exp index cdca4c2..c6ec490 100644 --- a/gcc/testsuite/lib/gcc-defs.exp +++ b/gcc/testsuite/lib/gcc-defs.exp @@ -303,18 +303,26 @@ proc dg-additional-options { args } { # main source file. set additional_sources "" +set additional_sources_omit_on_compile "" set additional_sources_used "" proc dg-additional-sources { args } { global additional_sources + global additional_sources_omit_on_compile if { [llength $args] > 3 } { error "[lindex $args 0]: too many arguments" return } - if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { + set target [lindex $args 2] + if { [llength $args] >= 3 && [lindex $target 0] == "linkonly" } { + append additional_sources_omit_on_compile " [lindex $args 1]" + set target [lreplace $target 0 1] + } + + if { [llength $args] >= 3 && $target != ""} { + switch [dg-process-target $target] { "S" { append additional_sources " [lindex $args 1]" } "N" { } "F" { error "[lindex $args 0]: `xfail' not allowed here" } @@ -407,16 +415,29 @@ proc dg-additional-files-options { options source dest type } { gcc_adjust_linker_flags global additional_sources + global additional_sources_omit_on_compile global additional_sources_used global additional_files set to_download [list] - if { $additional_sources == "" } then { - } elseif { $type != "executable" && $dest != "" } then { + if { $additional_sources_omit_on_compile != "" \ + && $additional_sources != "" \ + && $type != "executable" && $dest != "" } then { + set linkonly "" foreach s $additional_sources { - unsupported "$s: additional-source will not be used to build $dest" + foreach s2 $additional_sources_omit_on_compile { + if { $s == $s2 } { + unsupported "$s: additional-source will not be used to build $dest" + set s "" + break + } + } + if { $s != "" } { + append linkonly " $s" + } } - set additional_sources_used "" - set additional_sources "" + set additional_sources "$linkonly" + } + if { $additional_sources == "" } then { } else { if [is_remote host] { lappend options "additional_flags=$additional_sources" |